masks-server 0.14.1 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manage-DbLHfFvt.js","names":["held","$.proxy","$.proxy","root","$.from_html","$.child","rest_excludes","root","$.from_html","$.prop","$.rest_props","$.child","root","$.from_html","$.prop","$.sibling","$.child","$.only_child","$.set_text","root","$.from_html","root_1","$.comment","$.first_child","$.derived","$.to_array","$.get","$.child","$.proxy","root","$.from_html","$.prop","$.derived","$.get","$.comment","$.first_child","$.child","$.only_child","$.sibling","$.delegate","$.proxy","root","$.from_html","$.props_id","$.prop","$.child","$.sibling","$.only_child","root","$.from_html","root_1","root_2","root_3","root_4","$.prop","$.child","$.only_child","$.sibling","$.derived","$.get","$.set_text","$.set_class","root","$.from_html","$.child","$.delegate","root","$.from_html","$.prop","$.child","$.sibling","$.only_child","$.delegate","root","$.from_html","root_1","$.derived","$.comment","$.first_child","$.text","$.set_text","$.child","$.get","$.index","$.only_child","$.sibling","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","root_7","root_8","root_9","root_10","root_11","root_12","root_13","root_14","root_15","$.state","$.proxy","$.derived","$.get","$.child","$.first_child","$.sibling","$.to_array","$.only_child","$.set_attribute","$.set","$.set_text","$.comment","$.text","$.delegate","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","root_7","root_8","root_9","root_10","$.prop","$.state","$.derived","$.get","$.child","$.sibling","$.only_child","$.set_text","$.set_class","$.set","$.set_attribute","$.delegate","root","$.from_html","root_1","root_2","$.prop","$.rest_props","$.child","$.only_child","$.sibling","$.set_text","$.delegate","root","$.from_html","root_1","root_2","$.first_child","$.only_child","$.set_text","$.sibling","root","$.from_html","root_1","root_2","root_3","root_4","$.prop","$.child","$.text","$.set_text","$.sibling","$.comment","$.first_child","$.only_child","$.set_class","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","root_7","root_8","root_9","root_10","root_11","root_12","root_13","root_14","$.state","$.proxy","$.derived","$.get","$.first_child","$.to_array","$.only_child","$.sibling","$.child","$.set","$.set_text","$.text","$.comment","$.set_class","$.delegate","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","root_7","root_8","$.prop","$.comment","$.first_child","$.only_child","$.set_text","$.child","$.derived","$.get","$.text","$.sibling","$.delegate","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","$.prop","$.comment","$.first_child","$.only_child","$.set_text","$.child","$.derived","$.get","$.text","$.sibling","$.set_class","$.index","$.delegate","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","$.prop","$.state","$.derived","$.get","$.comment","$.first_child","$.only_child","$.set_text","$.child","$.sibling","$.text","$.set_class","$.set","$.delegate","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","root_7","root_8","root_9","$.prop","$.state","$.derived","$.get","$.child","$.only_child","$.sibling","$.set_text","$.first_child","$.set","$.text","$.delegate","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","root_7","root_8","$.prop","$.state","$.derived","$.get","$.comment","$.first_child","$.only_child","$.set_text","$.child","$.sibling","$.text","$.set_class","$.set","$.delegate","root","$.from_html","$.prop","$.derived","$.to_array","$.get","$.text","$.set_text","$.set_attribute","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","root_7","root_8","root_9","root_10","root_11","root_12","root_13","root_14","root_15","root_16","root_17","root_18","root_19","root_20","root_21","root_22","root_23","root_24","root_25","root_26","root_27","root_28","root_29","root_30","$.prop","$.state","$.proxy","$.derived","$.get","reset","$.comment","$.first_child","$.only_child","$.set_text","$.set_class","$.sibling","$.child","$.text","$.to_array","$.delegate","root","$.from_html","root_1","$.get","$.first_child","$.only_child","$.sibling","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","root_7","root_8","$.state","$.proxy","$.get","$.derived","$.comment","$.first_child","$.only_child","$.set_text","$.sibling","$.child","$.text","$.delegate","root","$.from_html","root_1","$.prop","$.comment","$.first_child","$.only_child","root","$.from_html","root_1","root_2","$.prop","$.child","$.only_child","$.set_text","$.sibling","$.derived","$.to_array","$.get","$.derived_safe_equal","$.fallback","$.select_option","$.delegate","root","$.from_html","$.prop","$.child","$.sibling","$.set_text","$.delegate","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","root_7","root_8","root_9","root_10","root_11","root_12","root_13","root_14","$.state","$.proxy","$.derived","$.get","$.first_child","$.sibling","$.only_child","$.set_text","$.to_array","$.child","$.set","$.text","$.comment","$.delegate","root","$.from_html","root_1","root_2","root_3","root_4","$.prop","$.state","$.proxy","$.get","$.derived","$.first_child","$.index","$.child","$.only_child","$.sibling","$.set_text","$.delegate","root","$.from_html","root_1","root_2","root_3","$.derived","$.get","$.first_child","$.sibling","$.child","$.text","$.set_text","$.only_child","$.delegate","root","$.from_html","root_1","root_2","root_3","root_4","root_5","$.proxy","$.derived","$.get","$.first_child","$.sibling","$.child","$.text","$.set_text","$.only_child","$.select_option","$.delegate","root","$.from_html","root_1","root_2","root_3","root_4","$.prop","$.derived","$.get","$.first_child","$.sibling","$.child","$.only_child","$.text","$.set_text","$.delegate","root","$.from_html","root_1","$.prop","$.state","$.proxy","$.get","$.derived","$.child","$.only_child","$.sibling","$.set_text","$.set","$.delegate","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","root_7","root_8","root_9","root_10","root_11","root_12","root_13","root_14","root_15","root_16","root_17","root_18","root_19","root_20","root_21","root_22","root_23","root_24","root_25","root_26","root_27","root_28","$.prop","$.state","$.proxy","$.derived","$.get","$.comment","$.first_child","$.only_child","$.set_text","$.sibling","$.child","$.text","$.set","$.to_array","$.select_option","$.delegate","root","$.from_html","root_1","$.first_child","$.child","$.derived","$.get","$.text","$.set_text","$.sibling","$.only_child","$.noop","root","$.from_html","root_1","$.prop","$.child","$.only_child","$.sibling","$.set_text","$.clsx","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","root_7","$.state","$.get","$.only_child","$.set_text","$.derived","$.first_child","$.sibling","$.child","$.set","$.comment","$.set_class","$.text","$.delegate","root","$.from_html","root_1","root_2","$.comment","$.first_child","$.get","$.only_child","$.sibling","$.child","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","root_7","root_8","root_9","root_10","root_11","root_12","root_13","root_14","root_15","root_16","root_17","root_18","root_19","root_20","root_21","root_22","root_23","root_24","root_25","root_26","root_27","$.noop","$.derived","$.get","$.first_child","$.only_child","$.sibling","$.prop","$.state","$.proxy","$.child","$.text","$.set_text","$.set","$.to_array","$.set_attribute","$.comment","$.delegate","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","root_7","root_8","root_9","$.state","$.derived","$.get","$.first_child","$.sibling","$.child","$.only_child","$.set_text","$.set","$.delegate","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","root_7","root_8","root_9","root_10","root_11","root_12","root_13","$.state","$.proxy","$.derived","$.get","$.first_child","$.sibling","$.child","$.only_child","$.set_text","$.index","$.comment","$.set","$.delegate","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","root_7","root_8","root_9","$.state","$.get","$.comment","$.first_child","$.only_child","$.set_text","$.derived","$.sibling","$.child","$.set_attribute","$.to_array","$.text","$.delegate","root","$.from_svg","root_1","root_2","$.from_html","root_3","root_4","root_5","$.derived","$.get","$.state","$.child","$.only_child","$.sibling","$.set_class","$.set","root","$.from_html","$.proxy","$.comment","$.first_child","$.child","$.only_child","$.sibling","$.delegate","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","root_7","root_8","root_9","root_10","root_11","root_12","root_13","root_14","root_15","$.state","$.proxy","$.get","$.derived","$.comment","$.first_child","$.only_child","$.set_text","$.child","$.sibling","$.text","$.set","$.set_attribute","$.noop","$.delegate","root","$.from_html","$.child","$.derived","$.get","$.text","$.set_text","$.sibling","$.set_attribute","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","$.state","$.proxy","$.derived","$.get","$.first_child","$.sibling","$.child","$.text","$.set_text","$.only_child","$.select_option","$.delegate","root","$.from_html","root_1","root_2","root_3","root_4","root_5","$.state","$.proxy","$.only_child","$.set_text","$.derived","$.get","$.first_child","$.sibling","$.comment","$.child","$.text","$.delegate","$.noop","root_1","$.child","$.sibling","$.only_child","root","$.set_text","$.from_html","root_2","root_3","root_4","root_5","root_6","root_7","root_8","root_9","root_10","root_11","root_12","root_13","root_14","root_15","root_16","root_17","root_18","$.derived","$.get","$.first_child","$.to_array","$.comment","$.prop","$.state","$.proxy","$.text","$.delegate","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","root_7","root_8","root_9","root_10","root_11","root_12","$.state","$.proxy","$.derived","$.get","$.child","$.sibling","$.first_child","$.only_child","$.select_option","$.comment","$.set_text","$.delegate","root","$.from_html","root_1","$.state","$.proxy","$.derived","$.get","$.child","$.only_child","$.sibling","$.text","$.set_text","$.set","$.delegate","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","root_7","root_8","$.state","$.child","$.get","$.noop","$.derived","$.comment","$.first_child","$.only_child","$.set_attribute","$.sibling","$.select_option","$.set","$.set_text","$.update","$.delegate","root","$.from_html","$.prop","$.derived","$.get","$.first_child","$.child","$.text","$.set_text","$.sibling","$.set_attribute","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","root_7","root_8","$.state","$.get","$.derived","$.first_child","$.sibling","$.child","$.only_child","$.set","$.set_text","$.comment","$.delegate","root","$.from_html","root_1","root_2","root_3","$.state","$.first_child","$.sibling","$.derived","$.get","$.child","$.only_child","$.set","$.delegate","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","root_7","root_8","$.state","$.proxy","$.snapshot","$.get","$.derived","$.comment","$.first_child","$.only_child","$.set_text","$.sibling","$.child","$.set","$.to_array","$.text","$.delegate","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","root_7","$.state","$.get","$.derived","$.first_child","$.sibling","$.child","$.only_child","$.set_text","$.set","$.delegate","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","$.state","$.get","$.derived","$.first_child","$.sibling","$.child","$.only_child","$.set_text","$.set","$.to_array","$.delegate","root","$.from_html","$.derived","$.get","$.child","$.sibling","root","$.from_html","root_1","$.child","$.derived","$.get","$.text","$.set_text","$.sibling","$.set_class","$.only_child","$.delegate","$.from_html","$.from_svg","$.state","$.derived","$.get","$.comment","$.first_child","$.child","$.only_child","$.sibling","$.set_text","$.to_array","$.text","$.set_attribute","$.delegate","append","get","html","if_block","key","text$1","child","template_effect","delegate","sibling","first_child","delegated","from_html","from_svg","mount","props_id","update","event","snippet","index","user_effect","untrack","set","proxy","state","select_option","rest_props","pop","clsx","bind_group","snapshot","remove_input_defaults","fallback","derived_safe_equal","set_attribute","noop","init_select","bind_select_value","prop","getContext","comment","set_text","bind_value","next","set_value","bind_this","push","set_checked","to_array","only_child","remove_textarea_child","bind_checked","setContext","initial","user_derived","attribute_effect","reset","set_style","each","set_class","replay_events","ALPHABET","random","bytes","length","value","byte","encode","binary","challenge","verifier","method","createDpopKey","pair","exported","text","dpopProof","target","url","header","payload","accessToken","signing","DATABASE","SHELF","HELD","database","opened","request","resolve","reject","failure","answered","heldDpopKey","shelf","found","made","forgetDpopKey","FAILURES","values","code","template","saying","worded","description","MasksError","options","Refused","InvalidToken","Insecure","LEEWAY","REQUIRED","ALGORITHMS","padded","part","out","base64url","json","held","audiences","halfHash","digest","verifyIdToken","rawHeader","rawPayload","rawSignature","rest","token","algorithm","keyFor","issuer","claims","now","named","audience","name","leeway","nonce","maxAge","list","PENDING","SESSION","createBrowserClient","call","store","scope","resources","here","clientId","redirectUri","restored","restore","document","keys","refreshing","dpopKey","proved","generation","clear","save","discover","response","fetchKeys","jwks_uri","revalidate","jwk","refresh","kid","post","started","token_endpoint","body","authorizeUrl","waiting","returnTo","organization","query","prompt","authorization_endpoint","avatarUrl","avatar_endpoint","avatar_styles_supported","style","base","subject","size","expired","renew","previous","tokens","revoke","revocation_endpoint","client","opts","raw","access","headers","init","leaving","everywhere","end_session_endpoint","postLogoutRedirectUri","PLACEHOLDER","held$1","plurals","useCopy","copy","locale","lookup","fill","whole","t","form","KEY","SCOPE","keep","all","boot","forget","callbackUri","handshakeUrl","redeem","detach","files","walk","path","one","at","variables","createApi","build","authorization","answer","idToken","sent","file","ROUTER","createRouter","settle","root","to","provideRouter","router","useRouter","root$61","Empty","div","p","node","$$props","$$anchor","rest_excludes$1","root$60","Link","klass","follow","a","$0","root$59","Spinner","label","span","root$58","root_1$48","Marks","SHAPES","fragment","consequent","shape","tone","$$array","$$item","span_1","svg","$$render","blocked","actor","device","actorMarks","createPages","cursor","total","root$57","Pager","busy","first","last","earlier","later","nav","button","text_1","button_1","text_2","$1","$2","$3","createFeedback","blame","thrown","notice","work","formatters","formatter","kind","make","DAY","lang","MOMENT","RELATIVE","STEPS","parsed","iso","day","moment","since","gap","unit","joined","kept","root$56","Tip","id","root$55","root_1$47","root_2$39","root_3$35","root_4$33","Section","title","lede","help","row","section","classes","consequent_4","div_1","node_1","consequent_1","div_2","h2","node_2","node_3","consequent_2","node_4","consequent_3","div_3","node_5","div_4","node_6","root$54","Row","tr","root$53","Search","input","$$args","root$52","root_1$46","Table","heads","column","alternate","table","thead","th","head","tbody","root$51","root_1$45","root_2$38","root_3$34","root_4$32","root_5$29","root_6$26","root_7$22","root_8$20","root_9$14","root_10$11","root_11$10","root_12$10","root_13$9","root_14$8","root_15$6","Devices","LENSES","COLUMNS","devices","loading","lens","search","agent","chosen","refuse","narrowing","load","data","look","filter","clearFilter","toggle","toggleAll","blocking","outcome","done","spared","bulk","question","mutation","blockChosen","blockMatching","nothing","actions","$$value","fragment_1","text_3","label_1","text_4","button_2","text_5","p_1","text_6","code_1","text_7","button_3","text_8","label_2","input_1","text_9","button_4","text_10","text_11","consequent_5","alternate_1","fragment_4","node_7","fragment_6","td","input_2","td_1","node_8","text_12","text_13","node_9","consequent_6","span_2","text_14","consequent_7","span_3","text_15","node_10","consequent_8","span_4","text_16","node_11","consequent_9","div_5","text_17","td_2","node_12","consequent_10","div_6","fragment_8","text_18","node_13","text_19","span_5","text_20","td_3","text_21","td_4","text_22","root$50","root_1$44","root_2$37","root_3$33","root_4$31","root_5$28","root_6$25","root_7$21","root_8$19","root_9$13","root_10$10","ScopesEditor","available","disabled","open","active","unfolded","needle","offered","rank","b","listed","typed","novel","choices","shown","add","remove","keydown","ul","li","classes_1","li_1","ul_1","li_2","li_3","rest_excludes","root$49","root_1$43","root_2$36","Field","type","onsave","root$48","root_1$42","root_2$35","Notices","root$47","root_1$41","root_2$34","root_3$32","root_4$30","Page","back","hero","heading","h1","fragment_2","root$46","root_1$40","root_2$33","root_3$31","root_4$29","root_5$27","root_6$24","root_7$20","root_8$18","root_9$12","root_10$9","root_11$9","root_12$9","root_13$8","root_14$7","ActorsPage","binding_group","pages","STANDARD","feedback","actors","adding","inviting","addresses","joining","groups","invited","groupsLoaded","invitedCount","openInvites","inviteMany","again","nickname","email","password","scopes","supported","minimum","created","turn","direction","close","send","presence","textarea","fieldset","legend","group","input_value","fragment_7","button_5","button_6","fragment_9","node_14","node_15","p_2","node_16","fragment_14","node_17","rows","fragment_15","node_18","fragment_17","img","div_7","node_19","node_20","div_8","text_23","root$45","root_1$39","root_2$32","root_3$30","root_4$28","root_5$26","root_6$23","root_7$19","root_8$17","Connections","showActor","stop","delegation","connection","span_6","span_7","span_8","span_9","root$44","root_1$38","root_2$31","root_3$29","root_4$27","root_5$25","root_6$22","Consents","consent","GRAVE","NOTABLE","action","detailed","details","phrase","root$43","root_1$37","root_2$30","root_3$28","root_4$26","root_5$24","root_6$21","Events","empty","limit","collapse","same","other","runs","UUID","trail","ol","count","time","d","root$42","root_1$36","root_2$29","root_3$27","root_4$25","root_5$23","root_6$20","root_7$18","root_8$16","root_9$11","Presence","columns","act","session","onDevice","signOutDevice","block","unblock","signOutEverywhere","allSessions","allDevices","sessions","h3","section_1","h3_1","alternate_2","span_10","root$41","root_1$35","root_2$28","root_3$26","root_4$24","root_5$22","root_6$19","root_7$17","root_8$15","Tokens","KIND","said","family","$4","$5","root$40","Parts","root$39","root_1$34","root_2$27","root_3$25","root_4$23","root_5$21","root_6$18","root_7$16","root_8$14","root_9$10","root_10$8","root_11$8","root_12$8","root_13$7","root_14$6","root_15$5","root_16$4","root_17$4","root_18$4","root_19$3","root_20$3","root_21$3","root_22$3","root_23$3","root_24$3","root_25$3","root_26$3","root_27$3","root_28$2","root_29$1","root_30$1","root_31","root_32","root_33","root_34","ActorPage","FIELDS","MORE","PROFILE","viewer","draft","codes","link","uploading","yourself","PARTS","identity","approve","resetFactors","dismiss","membership","belongs","sourcedBy","toggleGroup","saveProfile","saveScopes","generate","recover","confirmation","result","reset$1","resend","confirmEmail","revokePasskey","passkey","choose","removePhoto","disable","CODE_FACTORS","turnOff","lower","suspend","alternate_4","lead","after","strong","strong_1","div_9","div_10","div_11","strong_2","div_12","div_13","div_14","strong_3","div_15","div_16","div_17","strong_4","div_18","div_19","consequent_15","fragment_5","consequent_11","div_20","code_2","d_1","text_24","consequent_12","text_25","consequent_14","fragment_10","consequent_13","text_26","text_27","text_28","p_3","text_29","text_30","text_31","d_2","node_21","consequent_23","fragment_13","node_22","node_23","consequent_16","text_32","button_7","text_33","node_24","node_25","consequent_17","div_21","text_34","span_11","text_35","div_22","button_8","text_36","button_9","text_37","node_26","field","factor","$$array_1","div_23","span_12","text_38","button_10","text_39","node_27","consequent_18","p_4","text_40","node_28","fragment_16","node_29","consequent_19","p_5","text_41","div_24","span_13","text_42","span_14","node_30","consequent_20","span_15","text_43","node_31","consequent_21","span_16","text_44","button_11","text_45","node_32","consequent_22","span_17","text_46","div_25","span_18","text_47","span_19","text_48","node_33","node_34","consequent_24","text_49","alternate_3","fragment_23","node_35","fragment_24","div_26","$$array_2","summary","text_50","div_27","$$array_3","button_12","text_51","node_36","fragment_27","div_28","div_29","img_1","span_20","text_52","div_30","classes_2","text_53","node_37","consequent_25","button_13","text_54","node_38","consequent_26","span_21","text_55","node_39","fragment_28","node_40","consequent_28","div_31","node_41","consequent_27","button_14","text_56","button_15","text_57","root$38","root_1$33","Facts","dl","term","mono","dt","dd","root$37","root_1$32","root_2$26","root_3$24","root_4$22","root_5$20","root_6$17","root_7$15","root_8$13","DevicePage","events","signOut","facts","fragment_3","root$36","root_1$31","ClientLogo","sized","root$35","root_1$30","root_2$25","Select","select","off","option","option_value","select_value","root$34","Switch","checked","onchange","root$33","root_1$29","root_2$24","root_3$23","root_4$21","root_5$19","root_6$16","root_7$14","root_8$12","root_9$9","root_10$7","root_11$7","root_12$7","root_13$6","root_14$5","ClientsPage","KINDS","presets","blank","preset","lines","readMetadata","read","archived","clients","textarea_1","textarea_2","label_3","textarea_3","label_4","textarea_4","fragment_11","fragment_12","setting","fragment_19","POLICY_FIELDS","FACTORS","CONFIRMATIONS","PRESENCE","known","yes","UNITS","duration","seconds","describePolicy","policy","policyDifferences","theirs","root$32","root_1$28","root_2$23","root_3$22","root_4$20","ForwardAuthRules","rules","OUTCOMES","LISTS","drafted","rule","split","move","by","root$31","root_1$27","root_2$22","root_3$21","Machines","machine","root$30","root_1$26","root_2$21","root_3$20","root_4$19","root_5$18","AccessRequests","grant","decline","root$29","root_1$25","root_2$20","root_3$19","root_4$18","Namespaces","showClient","release","root$28","root_1$24","Lines","hint","fresh","changed","root$27","root_1$23","root_2$19","root_3$18","root_4$17","root_5$17","root_6$15","root_7$13","root_8$11","root_9$8","root_10$6","root_11$6","root_12$6","root_13$5","root_14$4","root_15$4","root_16$3","root_17$3","root_18$3","root_19$2","root_20$2","root_21$2","root_22$2","root_23$2","root_24$2","root_25$2","root_26$2","root_27$2","root_28$1","root_29","root_30","ClientPage","QUERY","roles","policies","fallbackPolicy","logoutUri","jwksUri","jwks","declared","lasts","accessMinutes","refreshDays","chainDays","sector","metadataUrl","certificate","entityId","sloUrl","links","attributes","secret","secretExpired","NAME_IDS","saml","SUBJECTS","GRANTS","LINKS","placeholder","saveLinks","changes","logoChanged","saveLifetimes","differences","keyed","mapped","attribute","claim","roleList","admit","on","saveRoles","unattended","granting","signsInAsItself","knowsActorsAs","saveKeys","pending","saveKeySet","saveDeclared","saveAttributes","pairs","line","METHODS","authenticates","rotate","archive","alternate_5","fragment_18","fragment_26","p_6","p_7","label_5","select_1","option_1","option_1_value","select_1_value","fragment_32","node_42","node_43","node_44","fragment_34","node_45","node_46","node_47","label_6","select_2","format","option_2","option_2_value","select_2_value","label_7","label_8","node_48","node_49","$6","node_50","fragment_35","node_51","p_8","node_52","node_53","$$array_4","node_54","fragment_39","label_9","select_3","option_3","node_55","option_4","option_4_value","select_3_value","node_56","p_9","consequent_30","fragment_40","node_57","consequent_29","instead","fragment_41","p_10","node_58","consequent_31","fragment_42","node_59","node_60","node_61","p_11","node_62","consequent_32","form_1","node_63","node_64","node_65","node_66","node_67","node_68","consequent_33","root$26","root_1$22","OrganizationCell","root$25","root_1$21","OrganizationHeadcount","root$24","root_1$20","root_2$18","root_3$17","root_4$16","root_5$16","root_6$14","root_7$12","OrganizationsPage","keyTouched","slug","members","signsIn","provider","role","root$23","root_1$19","root_2$17","Tally","root$22","root_1$18","root_2$16","root_3$16","root_4$15","root_5$15","root_6$13","root_7$11","root_8$10","root_9$7","root_10$5","root_11$5","root_12$5","root_13$4","root_14$3","root_15$3","root_16$2","root_17$2","root_18$2","root_19$1","root_20$1","root_21$1","root_22$1","root_23$1","root_24$1","root_25$1","root_26$1","root_27$1","OrganizationPage","roleOf","member","lastOwner","roleOptions","setRole","removeOf","BUILT_IN","providers","idle","handing","naming","holding","revoking","plain","counts","status","run","openAdding","custom","addRole","dropRole","rename","map","parts","handable","pickProvider","handOver","handBack","setPolicy","fragment_21","fragment_22","root$21","root_1$17","root_2$15","root_3$15","root_4$14","root_5$14","root_6$12","root_7$10","root_8$9","root_9$6","DomainsSection","domain","host","providerOptions","proven","check","route","serve","root$20","root_1$16","root_2$14","root_3$14","root_4$13","root_5$13","root_6$11","root_7$9","root_8$8","root_9$5","root_10$4","root_11$4","root_12$4","root_13$3","GroupsSection","SOURCES","editing","sourceOptions","source","kindOptions","fieldOptions","create","edit","condition","input_3","root$19","root_1$15","root_2$13","root_3$13","root_4$12","root_5$12","root_6$10","root_7$8","root_8$7","root_9$4","SettingsPage","RETENTION","HOUR","lasting","lifetimes","usual","days","BADGE","chooseLogo","stage","activate","discard","root$18","root_1$14","root_2$12","root_3$12","root_4$11","root_5$11","BarChart","peak","point","step","width","sum","hovered","share","bar","height","y","radius","x","ticks","figure","figcaption","rect","tick","caption","th_1","tr_1","root$17","Loader","root$16","root_1$13","root_2$11","root_3$11","root_4$10","root_5$10","root_6$9","root_7$7","root_8$6","root_9$3","root_10$3","root_11$3","root_12$3","root_13$2","root_14$2","root_15$2","OverviewPage","TONES","SPANS","MARK","SKIPPED","skipped","checking","checkFailure","skip","needs","starting","plotted","checkedAt","sentence","runChecks","need","activity","root$15","ActivityParts","root$14","root_1$12","root_2$10","root_3$10","root_4$9","root_5$9","root_6$8","ActivityPage","exporting","today","range","grave","about","actorId","narrowed","describe","only","worrying","download","$7","protocolName","protocol","secretMissing","providerMarks","root$13","root_1$11","root_2$9","root_3$9","root_4$8","root_5$8","ProvidersPage","root_1$10","root$12","root_2$8","root_3$8","root_4$7","root_5$7","root_6$7","root_7$6","root_8$5","root_9$2","root_10$2","root_11$2","root_12$2","root_13$1","root_14$1","root_15$1","root_16$1","root_17$1","root_18$1","root_19","root_20","root_21","root_22","root_23","root_24","root_25","root_26","root_27","root_28","ProviderPage","give","callbackUrl","spEntityId","setup","variable","ASKED","NAME_ID_FORMATS","mcp","oidc","oauth2","signsSecret","needsSecret","signIn","origin","fragment_31","MAPPED","fragment_36","PRESETS","ARGUMENTS","extra","passed","CREATE_EXTRA","CREATE","UPDATE","connected","baseline","dirty","generic","trimmed","words","params","metadataFields","register","complete","fragment_37","fragment_45","fragment_52","consequent_34","consequent_35","consequent_36","consequent_37","fragment_58","consequent_39","consequent_38","consequent_40","root$11","root_1$9","root_2$7","root_3$7","root_4$6","root_5$6","root_6$6","root_7$5","root_8$4","root_9$1","root_10$1","root_11$1","root_12$1","MessageSending","testing","services","serviceOf","forKind","blankConfig","service","pick","sender","config","makePrimary","test","root$10","root_1$8","MailTemplate","message","signature","names","root$9","root_1$7","root_2$6","root_3$6","root_4$5","root_5$5","root_6$5","root_7$4","root_8$3","MessageTemplates","GROUPS","templated","version","showing","fit","frame","previews","preview","templates","journey","optgroup","article","iframe","pre","root$8","MessagesPage","root$7","root_1$6","root_2$5","root_3$5","root_4$4","root_5$4","root_6$4","root_7$3","root_8$2","StreamsPage","stream","root$6","root_1$5","root_2$4","root_3$4","SignInRules","SUSPEND_AFTER","DELETE_AFTER","agents","networks","deleteAfter","root$5","root_1$4","root_2$3","root_3$3","root_4$3","root_5$3","root_6$3","root_7$2","root_8$1","root_9","root_10","root_11","root_12","root_13","root_14","root_15","root_16","root_17","root_18","PoliciesPage","ARGS","PASS","LIFETIMES","IDLE","SCORES","score","WORK","offeredWork","labelled","FIRST","SECOND","ACCOUNT_FIELDS","BLANK","signingProviders","$$array_5","$$array_6","option_3_value","select_4","$$array_7","select_5","$$array_8","option_5","option_5_value","select_6","$$array_9","option_6","option_6_value","$8","$9","$10","$11","$12","$13","$14","$15","$16","fragment_20","root$4","root_1$3","root_2$2","root_3$2","root_4$2","root_5$2","root_6$2","root_7$1","LdapSection","issued","issue","credential","passwordOnly","dt_1","dd_1","code_3","code_4","root$3","root_1$2","root_2$1","root_3$1","root_4$1","root_5$1","root_6$1","ProvisioningSection","lifetime","root$2","DirectoryPage","root$1","root_1$1","SettingsShell","TABS","unpair","tab","root_1","root_2","root_3","root_4","root_5","root_6","root_7","root_8","App","api","phase","levels","NAV","SETTINGS","REPAIRED","stale","error","start","ready","countWaiting","waitingLabel","current","inSettings","signedInAs","retry","main","main_1","nav_1","icon","svg_1"],"sources":["../../../../web/dist/pkce.js","../../../../web/dist/dpop.js","../../../../web/dist/failures.js","../../../../web/dist/errors.js","../../../../web/dist/jwt.js","../../../../web/dist/metadata.js","../../../../web/dist/browser.js","../../../../server/app/frontend/manage/lib/copy.js","../../../../server/app/frontend/manage/lib/pairing.js","../../../../server/app/frontend/manage/lib/api.svelte.js","../../../../server/app/frontend/manage/lib/router.svelte.js","../../../../server/app/frontend/manage/ui/Empty.svelte","../../../../server/app/frontend/manage/ui/Link.svelte","../../../../server/app/frontend/manage/ui/Spinner.svelte","../../../../server/app/frontend/manage/ui/Marks.svelte","../../../../server/app/frontend/manage/lib/marks.js","../../../../server/app/frontend/manage/lib/pages.svelte.js","../../../../server/app/frontend/manage/ui/Pager.svelte","../../../../server/app/frontend/manage/lib/feedback.svelte.js","../../../../server/app/frontend/manage/lib/format.js","../../../../server/app/frontend/manage/ui/Tip.svelte","../../../../server/app/frontend/manage/ui/Section.svelte","../../../../server/app/frontend/manage/ui/Row.svelte","../../../../server/app/frontend/manage/ui/Search.svelte","../../../../server/app/frontend/manage/ui/Table.svelte","../../../../server/app/frontend/manage/Devices.svelte","../../../../server/app/frontend/manage/ScopesEditor.svelte","../../../../server/app/frontend/manage/ui/Field.svelte","../../../../server/app/frontend/manage/ui/Notices.svelte","../../../../server/app/frontend/manage/ui/Page.svelte","../../../../server/app/frontend/manage/ActorsPage.svelte","../../../../server/app/frontend/manage/Connections.svelte","../../../../server/app/frontend/manage/Consents.svelte","../../../../server/app/frontend/manage/lib/events.js","../../../../server/app/frontend/manage/Events.svelte","../../../../server/app/frontend/manage/Presence.svelte","../../../../server/app/frontend/manage/Tokens.svelte","../../../../server/app/frontend/manage/ui/Parts.svelte","../../../../server/app/frontend/manage/ActorPage.svelte","../../../../server/app/frontend/manage/ui/Facts.svelte","../../../../server/app/frontend/manage/DevicePage.svelte","../../../../server/app/frontend/manage/ui/ClientLogo.svelte","../../../../server/app/frontend/manage/ui/Select.svelte","../../../../server/app/frontend/manage/ui/Switch.svelte","../../../../server/app/frontend/manage/ClientsPage.svelte","../../../../server/app/frontend/manage/lib/policies.js","../../../../server/app/frontend/manage/ForwardAuthRules.svelte","../../../../server/app/frontend/manage/Machines.svelte","../../../../server/app/frontend/manage/AccessRequests.svelte","../../../../server/app/frontend/manage/Namespaces.svelte","../../../../server/app/frontend/manage/ui/Lines.svelte","../../../../server/app/frontend/manage/ClientPage.svelte","../../../../server/app/frontend/manage/OrganizationCell.svelte","../../../../server/app/frontend/manage/OrganizationHeadcount.svelte","../../../../server/app/frontend/manage/OrganizationsPage.svelte","../../../../server/app/frontend/manage/ui/Tally.svelte","../../../../server/app/frontend/manage/OrganizationPage.svelte","../../../../server/app/frontend/manage/DomainsSection.svelte","../../../../server/app/frontend/manage/GroupsSection.svelte","../../../../server/app/frontend/manage/SettingsPage.svelte","../../../../server/app/frontend/manage/ui/BarChart.svelte","../../../../server/app/frontend/manage/ui/Loader.svelte","../../../../server/app/frontend/manage/OverviewPage.svelte","../../../../server/app/frontend/manage/ActivityParts.svelte","../../../../server/app/frontend/manage/ActivityPage.svelte","../../../../server/app/frontend/manage/lib/providers.js","../../../../server/app/frontend/manage/ProvidersPage.svelte","../../../../server/app/frontend/manage/ProviderPage.svelte","../../../../server/app/frontend/manage/MessageSending.svelte","../../../../server/app/frontend/manage/MailTemplate.svelte","../../../../server/app/frontend/manage/MessageTemplates.svelte","../../../../server/app/frontend/manage/MessagesPage.svelte","../../../../server/app/frontend/manage/StreamsPage.svelte","../../../../server/app/frontend/manage/SignInRules.svelte","../../../../server/app/frontend/manage/PoliciesPage.svelte","../../../../server/app/frontend/manage/LdapSection.svelte","../../../../server/app/frontend/manage/ProvisioningSection.svelte","../../../../server/app/frontend/manage/DirectoryPage.svelte","../../../../server/app/frontend/manage/SettingsShell.svelte","../../../../server/app/frontend/manage/App.svelte","../../../../server/app/frontend/entrypoints/manage.js"],"sourcesContent":["const ALPHABET = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~\";\nexport function random(length = 64) {\n const bytes = new Uint8Array(length);\n crypto.getRandomValues(bytes);\n let value = \"\";\n for (const byte of bytes)\n value += ALPHABET[byte % ALPHABET.length];\n return value;\n}\nexport function encode(bytes) {\n let binary = \"\";\n for (const byte of new Uint8Array(bytes))\n binary += String.fromCharCode(byte);\n return btoa(binary)\n .replace(/\\+/g, \"-\")\n .replace(/\\//g, \"_\")\n .replace(/=+$/, \"\");\n}\nexport async function challenge(verifier) {\n const digest = await crypto.subtle.digest(\"SHA-256\", new TextEncoder().encode(verifier));\n return encode(digest);\n}\nexport const method = \"S256\";\n","import { encode, random } from \"./pkce.js\";\nexport async function createDpopKey() {\n const pair = await crypto.subtle.generateKey({ name: \"ECDSA\", namedCurve: \"P-256\" }, false, [\"sign\", \"verify\"]);\n const exported = await crypto.subtle.exportKey(\"jwk\", pair.publicKey);\n return {\n privateKey: pair.privateKey,\n jwk: { kty: exported.kty, crv: exported.crv, x: exported.x, y: exported.y },\n };\n}\nconst text = (value) => encode(new TextEncoder().encode(JSON.stringify(value)).buffer);\nexport async function dpopProof(key, method, url, accessToken) {\n const target = new URL(url);\n const header = { typ: \"dpop+jwt\", alg: \"ES256\", jwk: key.jwk };\n const payload = {\n jti: random(32),\n htm: method.toUpperCase(),\n htu: `${target.origin}${target.pathname}`,\n iat: Math.floor(Date.now() / 1000),\n };\n if (accessToken) {\n payload.ath = encode(await crypto.subtle.digest(\"SHA-256\", new TextEncoder().encode(accessToken)));\n }\n const signing = `${text(header)}.${text(payload)}`;\n const signature = await crypto.subtle.sign({ name: \"ECDSA\", hash: \"SHA-256\" }, key.privateKey, new TextEncoder().encode(signing));\n return `${signing}.${encode(signature)}`;\n}\nconst DATABASE = \"masks\";\nconst SHELF = \"keys\";\nconst HELD = \"dpop\";\nlet database;\nfunction opened() {\n database ??= new Promise((resolve, reject) => {\n const request = indexedDB.open(DATABASE, 1);\n request.onupgradeneeded = () => request.result.createObjectStore(SHELF);\n request.onsuccess = () => resolve(request.result);\n request.onerror = () => reject(request.error);\n }).catch((failure) => {\n database = undefined;\n throw failure;\n });\n return database;\n}\nfunction answered(request) {\n return new Promise((resolve, reject) => {\n request.onsuccess = () => resolve(request.result);\n request.onerror = () => reject(request.error);\n });\n}\nexport async function heldDpopKey() {\n try {\n const shelf = await opened();\n const found = (await answered(shelf.transaction(SHELF).objectStore(SHELF).get(HELD)));\n if (found)\n return found;\n const made = await createDpopKey();\n await answered(shelf.transaction(SHELF, \"readwrite\").objectStore(SHELF).put(made, HELD));\n return made;\n }\n catch {\n return createDpopKey();\n }\n}\nexport async function forgetDpopKey() {\n try {\n const shelf = await opened();\n await answered(shelf.transaction(SHELF, \"readwrite\").objectStore(SHELF).delete(HELD));\n }\n catch { }\n}\n","export const FAILURES = {\n no_token: [\"invalid_token\", \"the request carries no token\"],\n not_a_jwt: [\"invalid_token\", \"that token is not a signed JWT\"],\n no_key: [\"invalid_token\", \"{issuer} publishes no key {kid}\"],\n not_signed_by: [\"invalid_token\", \"that token was not signed by {issuer}\"],\n not_an_algorithm: [\n \"invalid_token\",\n \"{algorithm} is not an algorithm masks signs with\",\n ],\n wrong_type: [\"invalid_token\", \"that token is typed {typ}, not {wanted}\"],\n expired: [\"invalid_token\", \"that token has expired\"],\n not_valid_yet: [\"invalid_token\", \"that token is not valid yet\"],\n issued_in_future: [\"invalid_token\", \"that token was issued in the future\"],\n other_issuer: [\"invalid_token\", \"that token was issued by another server\"],\n other_audience: [\"invalid_token\", \"that token was issued for another app\"],\n missing_claims: [\"invalid_token\", \"that token is missing {claims}\"],\n unverified: [\"invalid_token\", \"that token could not be verified\"],\n too_old: [\n \"invalid_token\",\n \"the person signed in longer ago than max_age allows\",\n ],\n bound_as_bearer: [\n \"invalid_token\",\n \"that token is held to a key, so it is presented as DPoP with a proof\",\n ],\n unbound_as_dpop: [\n \"invalid_token\",\n \"that token is held to no key, so it is presented as Bearer\",\n ],\n not_active: [\"invalid_token\", \"the issuer reports this token is not active\"],\n no_id_token: [\n \"invalid_token\",\n \"the token endpoint answered without an ID token\",\n ],\n id_token_other_sign_in: [\n \"invalid_token\",\n \"that ID token was issued for another sign-in\",\n ],\n id_token_other_client: [\n \"invalid_token\",\n \"that ID token was issued to another client\",\n ],\n id_token_several_audiences: [\n \"invalid_token\",\n \"that ID token names several audiences and was not issued to this client\",\n ],\n id_token_other_access_token: [\n \"invalid_token\",\n \"that ID token was issued with another access token\",\n ],\n id_token_other_organization: [\n \"invalid_token\",\n \"that ID token does not name the organization {organization}\",\n ],\n not_a_logout: [\"invalid_token\", \"that token is not about a logout\"],\n logout_names_nobody: [\n \"invalid_token\",\n \"that logout token names neither a subject nor a session\",\n ],\n logout_with_nonce: [\n \"invalid_token\",\n \"that logout token carries a nonce, so it is an ID token\",\n ],\n one_proof: [\"invalid_dpop_proof\", \"exactly one DPoP proof is required\"],\n proof_not_a_jwt: [\"invalid_dpop_proof\", \"that proof is not a signed JWT\"],\n proof_type: [\"invalid_dpop_proof\", \"a proof is typed {typ}\"],\n proof_algorithm: [\n \"invalid_dpop_proof\",\n \"{algorithm} is not an algorithm a proof may use\",\n ],\n proof_no_key: [\n \"invalid_dpop_proof\",\n \"a proof carries the public key that signed it\",\n ],\n proof_key_private: [\"invalid_dpop_proof\", \"a proof key is public\"],\n proof_key_unreadable: [\n \"invalid_dpop_proof\",\n \"that proof carries a key this API cannot read\",\n ],\n proof_unsigned: [\n \"invalid_dpop_proof\",\n \"that proof was not signed by the key it carries\",\n ],\n proof_other_key: [\n \"invalid_dpop_proof\",\n \"that proof was signed by another key than the token is held to\",\n ],\n proof_other_token: [\n \"invalid_dpop_proof\",\n \"that proof was made for another token\",\n ],\n proof_other_method: [\n \"invalid_dpop_proof\",\n \"that proof was made for another method\",\n ],\n proof_other_url: [\n \"invalid_dpop_proof\",\n \"that proof was made for another URL\",\n ],\n proof_not_now: [\"invalid_dpop_proof\", \"that proof was not made just now\"],\n proof_no_jti: [\"invalid_dpop_proof\", \"a proof carries a jti\"],\n proof_replayed: [\"invalid_dpop_proof\", \"that proof has already been used\"],\n no_scope: [\"insufficient_scope\", \"this token does not carry {scope}\"],\n not_granted: [\"insufficient_scope\", \"masks did not grant {scopes}\"],\n no_privilege: [\n \"insufficient_scope\",\n \"this account does not hold the {privilege} privilege\",\n ],\n no_organization: [\n \"insufficient_organization\",\n \"this sign-in names no organization\",\n ],\n other_organization: [\n \"insufficient_organization\",\n \"this sign-in is for {held}, and this needs {wanted}\",\n ],\n other_role: [\"insufficient_role\", \"{role} in {organization} is not {roles}\"],\n unreachable: [\"temporarily_unavailable\", \"{host} could not be reached\"],\n keys_unreachable: [\n \"temporarily_unavailable\",\n \"{issuer} could not be reached for its keys\",\n ],\n replay_store_unreachable: [\n \"temporarily_unavailable\",\n \"the replay store could not be reached\",\n ],\n replay_store_answer: [\n \"temporarily_unavailable\",\n \"the replay store answered with something other than true or false\",\n ],\n store_unreachable: [\n \"temporarily_unavailable\",\n \"the store could not be reached\",\n ],\n not_checked: [\"temporarily_unavailable\", \"the token could not be checked\"],\n plain_http: [\n \"insecure_url\",\n \"plain http is allowed only on this machine: {url}\",\n ],\n not_http: [\"insecure_url\", \"{url} is not an http or https URL\"],\n other_origin: [\"foreign_origin\", \"that URL belongs to another origin: {url}\"],\n tokens_only_for: [\n \"foreign_origin\",\n \"tokens are held only for {origins}, not {origin}\",\n ],\n answered_status: [\"server_error\", \"{url} answered {status}\"],\n not_json: [\"server_error\", \"{url} answered with something other than JSON\"],\n not_an_object: [\n \"server_error\",\n \"{url} answered with JSON that is not an object\",\n ],\n too_large: [\"server_error\", \"{url} answered with more than a megabyte\"],\n publishes_nothing: [\"invalid_issuer\", \"{issuer} publishes no {name}\"],\n names_another: [\n \"invalid_issuer\",\n \"{issuer} publishes a document naming {found}\",\n ],\n resource_names_another: [\n \"invalid_target\",\n \"{url} publishes metadata naming {found}\",\n ],\n state_mismatch: [\n \"invalid_state\",\n \"the state did not match the one this sign-in started with\",\n ],\n nothing_in_flight: [\n \"invalid_request\",\n \"this browser has no sign-in in flight\",\n ],\n no_callback_code: [\"invalid_request\", \"the callback carried no code\"],\n code_expired: [\"expired_token\", \"the code expired before anyone approved it\"],\n no_refresh_token: [\n \"invalid_grant\",\n \"there is no refresh token to renew these tokens with\",\n ],\n not_held_to_key: [\n \"invalid_dpop_proof\",\n \"the token endpoint answered with a token that is not held to this key\",\n ],\n no_avatars: [\"invalid_style\", \"{issuer} does not serve {style} avatars\"],\n not_connected: [\n \"handshake_required\",\n \"this app has not shaken hands with {issuer}\",\n ],\n nothing_connected: [\n \"access_denied\",\n \"masks connected nothing for {provider}\",\n ],\n no_refresh_for_connection: [\n \"invalid_grant\",\n \"masks issued no refresh token to keep the connection with\",\n ],\n delegation_not_answering: [\n \"temporarily_unavailable\",\n \"masks is not answering\",\n ],\n};\n","import { FAILURES } from \"./failures.js\";\nexport function failure(key, ...values) {\n const [code, template] = FAILURES[key];\n let index = 0;\n return {\n code,\n description: template.replaceAll(/\\{[a-z_]+\\}/g, () => String(values[index++])),\n };\n}\nexport function saying(key, ...values) {\n return failure(key, ...values).description;\n}\nfunction worded(code, description) {\n return description ? `masks: ${code}: ${description}` : `masks: ${code}`;\n}\nexport class MasksError extends Error {\n code;\n description;\n status;\n uri;\n constructor(code, description, options = {}) {\n super(worded(code, description));\n this.name = \"MasksError\";\n this.code = code;\n this.description = description;\n this.status = options.status;\n this.uri = options.uri;\n }\n}\nexport class Refused extends MasksError {\n constructor(code, description, options = {}) {\n super(code, description, options);\n this.name = \"Refused\";\n }\n static of(key, ...values) {\n const { code, description } = failure(key, ...values);\n return new Refused(code, description);\n }\n}\nexport class InvalidToken extends MasksError {\n constructor(description, options = {}) {\n super(options.code ?? \"invalid_token\", description);\n this.name = \"InvalidToken\";\n }\n static of(key, ...values) {\n const { code, description } = failure(key, ...values);\n return new InvalidToken(description, { code });\n }\n}\nexport class Insecure extends MasksError {\n constructor(description) {\n super(\"insecure_url\", description);\n this.name = \"Insecure\";\n }\n static of(key, ...values) {\n return new Insecure(saying(key, ...values));\n }\n}\nconst KINDS = new Set([\"MasksError\", \"Refused\", \"InvalidToken\", \"Insecure\"]);\nexport function isMasksError(error) {\n return (error instanceof MasksError ||\n (error instanceof Error &&\n KINDS.has(error.name) &&\n typeof error.code === \"string\"));\n}\nexport function hasCode(error, code) {\n return isMasksError(error) && error.code === code;\n}\n","import { InvalidToken } from \"./errors.js\";\nconst LEEWAY = 30;\nconst REQUIRED = [\"iss\", \"sub\", \"aud\", \"exp\", \"iat\"];\nconst ALGORITHMS = {\n RS256: {\n importing: { name: \"RSASSA-PKCS1-v1_5\", hash: \"SHA-256\" },\n signing: { name: \"RSASSA-PKCS1-v1_5\" },\n },\n ES256: {\n importing: { name: \"ECDSA\", namedCurve: \"P-256\" },\n signing: { name: \"ECDSA\", hash: \"SHA-256\" },\n },\n};\nfunction bytes(part) {\n const padded = part.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const binary = atob(padded.padEnd(padded.length + ((4 - (padded.length % 4)) % 4), \"=\"));\n const out = new Uint8Array(new ArrayBuffer(binary.length));\n for (let index = 0; index < binary.length; index++) {\n out[index] = binary.charCodeAt(index);\n }\n return out;\n}\nfunction base64url(value) {\n return btoa(String.fromCharCode(...value))\n .replace(/\\+/g, \"-\")\n .replace(/\\//g, \"_\")\n .replace(/=+$/, \"\");\n}\nfunction json(part) {\n try {\n const held = JSON.parse(new TextDecoder().decode(bytes(part)));\n if (!held || typeof held !== \"object\" || Array.isArray(held)) {\n throw InvalidToken.of(\"not_a_jwt\");\n }\n return held;\n }\n catch {\n throw InvalidToken.of(\"not_a_jwt\");\n }\n}\nfunction audiences(value) {\n if (Array.isArray(value))\n return value.map(String);\n return value === undefined || value === null ? [] : [String(value)];\n}\nasync function halfHash(value) {\n const digest = new Uint8Array(await crypto.subtle.digest(\"SHA-256\", new TextEncoder().encode(value)));\n return base64url(digest.subarray(0, digest.length / 2));\n}\nexport async function verifyIdToken(token, { issuer, audience, nonce, accessToken, maxAge, keyFor, leeway = LEEWAY, }) {\n const [rawHeader, rawPayload, rawSignature, ...rest] = token.split(\".\");\n if (!rawHeader ||\n !rawPayload ||\n rawSignature === undefined ||\n rest.length > 0) {\n throw InvalidToken.of(\"not_a_jwt\");\n }\n const header = json(rawHeader);\n const algorithm = ALGORITHMS[String(header.alg)];\n if (!algorithm) {\n throw InvalidToken.of(\"not_an_algorithm\", String(header.alg));\n }\n if (header.typ !== undefined) {\n const typ = String(header.typ)\n .toLowerCase()\n .replace(/^application\\//, \"\");\n if (typ !== \"jwt\") {\n throw InvalidToken.of(\"wrong_type\", String(header.typ), \"jwt\");\n }\n }\n const key = await crypto.subtle.importKey(\"jwk\", { ...(await keyFor(String(header.kid ?? \"\"))), alg: String(header.alg) }, algorithm.importing, false, [\"verify\"]);\n const signed = await crypto.subtle.verify(algorithm.signing, key, bytes(rawSignature), new TextEncoder().encode(`${rawHeader}.${rawPayload}`));\n if (!signed) {\n throw InvalidToken.of(\"not_signed_by\", issuer);\n }\n const claims = json(rawPayload);\n const now = Math.floor(Date.now() / 1000);\n if (String(claims.iss ?? \"\").replace(/\\/$/, \"\") !== issuer) {\n throw InvalidToken.of(\"other_issuer\");\n }\n const named = audiences(claims.aud);\n if (!named.includes(audience)) {\n throw InvalidToken.of(\"other_audience\");\n }\n for (const name of REQUIRED) {\n if (claims[name] === undefined) {\n throw InvalidToken.of(\"missing_claims\", name);\n }\n }\n if (typeof claims.exp === \"number\" && now - leeway >= claims.exp) {\n throw InvalidToken.of(\"expired\");\n }\n if (typeof claims.nbf === \"number\" && claims.nbf - leeway > now) {\n throw InvalidToken.of(\"not_valid_yet\");\n }\n if (typeof claims.iat === \"number\" && claims.iat - leeway > now) {\n throw InvalidToken.of(\"issued_in_future\");\n }\n if (named.length > 1 && claims.azp === undefined) {\n throw InvalidToken.of(\"id_token_several_audiences\");\n }\n if (claims.azp !== undefined && claims.azp !== audience) {\n throw InvalidToken.of(\"id_token_other_client\");\n }\n if (claims.nonce !== nonce) {\n throw InvalidToken.of(\"id_token_other_sign_in\");\n }\n if (accessToken !== undefined &&\n typeof claims.at_hash === \"string\" &&\n claims.at_hash !== (await halfHash(accessToken))) {\n throw InvalidToken.of(\"id_token_other_access_token\");\n }\n if (maxAge !== undefined &&\n !(typeof claims.auth_time === \"number\" &&\n claims.auth_time + maxAge + leeway >= now)) {\n throw InvalidToken.of(\"too_old\");\n }\n return claims;\n}\n","export const CLIENT_PATH = \"/oauth/client.json\";\nexport function list(value) {\n if (!value)\n return [];\n return Array.isArray(value) ? value : value.split(/\\s+/).filter(Boolean);\n}\nexport function clientMetadata(options) {\n const origin = new URL(options.origin).origin;\n const home = `${origin}/`;\n const scope = list(options.scope).join(\" \");\n return {\n client_id: `${origin}${CLIENT_PATH}`,\n client_name: options.name,\n client_uri: home,\n redirect_uris: options.redirectUris ?? [home],\n post_logout_redirect_uris: options.postLogoutRedirectUris ?? [home],\n grant_types: [\"authorization_code\", \"refresh_token\"],\n response_types: [\"code\"],\n token_endpoint_auth_method: \"none\",\n application_type: \"web\",\n ...(scope ? { scope } : {}),\n ...(options.logoUri ? { logo_uri: options.logoUri } : {}),\n ...(options.dpop ? { dpop_bound_access_tokens: true } : {}),\n };\n}\n","import { dpopProof, forgetDpopKey, heldDpopKey } from \"./dpop.js\";\nimport { failure, Insecure, InvalidToken, Refused } from \"./errors.js\";\nimport { verifyIdToken } from \"./jwt.js\";\nimport { CLIENT_PATH, list } from \"./metadata.js\";\nimport { challenge, method, random } from \"./pkce.js\";\nconst PENDING = \"masks:pending\";\nconst SESSION = \"masks:session\";\nexport function createBrowserClient(options) {\n const issuer = options.issuer.replace(/\\/$/, \"\");\n const call = options.fetch ?? globalThis.fetch.bind(globalThis);\n const store = options.storage ?? globalThis.sessionStorage;\n const scope = list(options.scope ?? [\"openid\", \"profile\", \"email\"]);\n const resources = list(options.resource);\n const here = globalThis.location?.origin;\n const clientId = options.clientId ?? (here && `${here}${CLIENT_PATH}`);\n const redirectUri = options.redirectUri ?? (here && `${here}/`);\n if (!globalThis.crypto?.subtle) {\n throw new Insecure(\"serve the page over https, or from localhost, since the browser hides the cryptography a sign-in needs on any other http page\");\n }\n if (!clientId || !redirectUri) {\n throw new Refused(\"invalid_request\", \"pass clientId and redirectUri when the client runs outside a browser\");\n }\n const restored = restore(store);\n let document = null;\n let held = restored?.tokens ?? null;\n let claims = restored?.identity ?? null;\n let keys = null;\n let refreshing = null;\n let dpopKey = null;\n const proved = async (method, url, accessToken) => {\n if (!options.dpop)\n return {};\n dpopKey ??= heldDpopKey();\n return { DPoP: await dpopProof(await dpopKey, method, url, accessToken) };\n };\n let generation = 0;\n const clear = () => {\n held = null;\n claims = null;\n save();\n };\n const save = () => {\n try {\n if (held) {\n store.setItem(SESSION, JSON.stringify({ tokens: held, identity: claims }));\n }\n else\n store.removeItem(SESSION);\n }\n catch { }\n };\n const discover = async () => {\n if (document)\n return document;\n const response = await call(`${issuer}/.well-known/openid-configuration`, {\n headers: { Accept: \"application/json\" },\n });\n if (!response.ok) {\n const { code, description } = failure(\"answered_status\", issuer, response.status);\n throw new Refused(code, description, { status: response.status });\n }\n const found = (await response.json());\n if (found.issuer?.replace(/\\/$/, \"\") !== issuer) {\n throw Refused.of(\"names_another\", issuer, String(found.issuer));\n }\n document = found;\n return found;\n };\n const fetchKeys = async (revalidate) => {\n const { jwks_uri } = await discover();\n if (!jwks_uri) {\n throw Refused.of(\"publishes_nothing\", issuer, \"jwks_uri\");\n }\n const response = await call(jwks_uri, {\n headers: { Accept: \"application/json\" },\n ...(revalidate ? { cache: \"no-cache\" } : {}),\n });\n if (!response.ok) {\n const { code, description } = failure(\"answered_status\", jwks_uri, response.status);\n throw new Refused(code, description, { status: response.status });\n }\n const found = (await response.json());\n return Object.fromEntries((found.keys ?? [])\n .filter((jwk) => jwk.kid && (!jwk.use || jwk.use === \"sig\"))\n .map((jwk) => [jwk.kid, jwk]));\n };\n const keyFor = async (kid, refresh = false) => {\n if (refresh || !keys)\n keys = await fetchKeys(refresh);\n const found = keys[kid];\n if (found)\n return found;\n if (!refresh)\n return keyFor(kid, true);\n throw InvalidToken.of(\"no_key\", issuer, kid);\n };\n const post = async (body) => {\n const started = generation;\n const { token_endpoint } = await discover();\n const response = await call(token_endpoint, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n Accept: \"application/json\",\n ...(await proved(\"POST\", token_endpoint)),\n },\n body: new URLSearchParams(body).toString(),\n });\n const payload = (await response.json().catch(() => ({})));\n if (!response.ok) {\n const { code, description } = payload.error\n ? { code: payload.error, description: payload.error_description }\n : failure(\"answered_status\", token_endpoint, response.status);\n throw new Refused(code, description, { status: response.status });\n }\n if (started !== generation) {\n throw new Refused(\"invalid_grant\", \"the client signed out while this request was in flight\");\n }\n held = {\n access_token: payload.access_token,\n id_token: payload.id_token,\n refresh_token: payload.refresh_token,\n token_type: payload.token_type ?? \"Bearer\",\n scope: payload.scope ?? \"\",\n expires_in: Number(payload.expires_in ?? 0),\n obtained_at: Math.floor(Date.now() / 1000),\n };\n return held;\n };\n const authorizeUrl = async ({ returnTo, prompt, organization = options.organization, } = {}) => {\n const { authorization_endpoint } = await discover();\n const verifier = random();\n const waiting = {\n state: random(24),\n nonce: scope.includes(\"openid\") ? random(24) : \"\",\n verifier,\n returnTo: returnTo ?? `${location.pathname}${location.search}`,\n ...(organization ? { organization } : {}),\n };\n store.setItem(PENDING, JSON.stringify(waiting));\n const query = new URLSearchParams([\n [\"response_type\", \"code\"],\n [\"client_id\", clientId],\n [\"redirect_uri\", redirectUri],\n [\"scope\", scope.join(\" \")],\n [\"state\", waiting.state],\n [\"code_challenge\", await challenge(verifier)],\n [\"code_challenge_method\", method],\n ]);\n if (waiting.nonce)\n query.append(\"nonce\", waiting.nonce);\n for (const value of resources)\n query.append(\"resource\", value);\n if (prompt)\n query.append(\"prompt\", prompt);\n if (organization)\n query.append(\"organization\", organization);\n return `${authorization_endpoint}?${query.toString()}`;\n };\n const avatarUrl = async (subject, { style = \"identicon\", size } = {}) => {\n const { avatar_endpoint, avatar_styles_supported } = await discover();\n if (!avatar_endpoint) {\n throw Refused.of(\"publishes_nothing\", issuer, \"avatar_endpoint\");\n }\n if (avatar_styles_supported && !avatar_styles_supported.includes(style)) {\n throw Refused.of(\"no_avatars\", issuer, style);\n }\n const base = `${avatar_endpoint}/${encodeURIComponent(subject)}/${style}`;\n return size ? `${base}?size=${size}` : base;\n };\n const expired = (leeway = 30) => {\n if (!held)\n return true;\n return Date.now() / 1000 + leeway >= held.obtained_at + held.expires_in;\n };\n const renew = async () => {\n if (!held?.refresh_token) {\n throw Refused.of(\"no_refresh_token\");\n }\n const previous = held.refresh_token;\n const body = [\n [\"grant_type\", \"refresh_token\"],\n [\"refresh_token\", previous],\n [\"client_id\", clientId],\n ];\n for (const value of resources)\n body.push([\"resource\", value]);\n let tokens;\n try {\n tokens = await post(body);\n }\n catch (failure) {\n if (failure.code === \"invalid_grant\") {\n clear();\n }\n throw failure;\n }\n tokens.refresh_token ??= previous;\n save();\n return tokens;\n };\n const refresh = async () => {\n refreshing ??= renew().finally(() => {\n refreshing = null;\n });\n return await refreshing;\n };\n const revoke = async (token) => {\n const { revocation_endpoint } = await discover();\n if (!revocation_endpoint)\n return;\n await call(revocation_endpoint, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/x-www-form-urlencoded\" },\n body: new URLSearchParams([\n [\"token\", token],\n [\"token_type_hint\", \"refresh_token\"],\n [\"client_id\", clientId],\n ]).toString(),\n });\n };\n const client = {\n async ready() {\n const url = new URL(window.location.href);\n const answered = url.searchParams.has(\"code\") || url.searchParams.has(\"error\");\n if (!answered || store.getItem(PENDING) === null)\n return claims;\n const { returnTo } = await client.callback(url.href);\n window.history.replaceState(window.history.state, \"\", returnTo);\n return claims;\n },\n discover,\n authorizeUrl,\n avatarUrl,\n async authorize(opts = {}) {\n window.location.assign(await authorizeUrl(opts));\n },\n pending() {\n return store.getItem(PENDING) !== null;\n },\n async callback(url = window.location.href) {\n const query = new URL(url).searchParams;\n const raw = store.getItem(PENDING);\n store.removeItem(PENDING);\n if (query.get(\"error\")) {\n throw new Refused(query.get(\"error\"), query.get(\"error_description\") ?? undefined);\n }\n if (!raw) {\n throw Refused.of(\"nothing_in_flight\");\n }\n const waiting = JSON.parse(raw);\n if (query.get(\"state\") !== waiting.state) {\n throw Refused.of(\"state_mismatch\");\n }\n const code = query.get(\"code\");\n if (!code) {\n throw Refused.of(\"no_callback_code\");\n }\n const body = [\n [\"grant_type\", \"authorization_code\"],\n [\"code\", code],\n [\"client_id\", clientId],\n [\"redirect_uri\", redirectUri],\n [\"code_verifier\", waiting.verifier],\n ];\n for (const value of resources)\n body.push([\"resource\", value]);\n const tokens = await post(body);\n if (waiting.nonce) {\n if (!tokens.id_token) {\n clear();\n throw InvalidToken.of(\"no_id_token\");\n }\n try {\n claims = await verifyIdToken(tokens.id_token, {\n issuer,\n audience: clientId,\n nonce: waiting.nonce,\n accessToken: tokens.access_token,\n keyFor,\n });\n }\n catch (failure) {\n clear();\n throw failure;\n }\n const named = claims?.org?.key;\n if (waiting.organization && named && named !== waiting.organization) {\n clear();\n throw InvalidToken.of(\"id_token_other_organization\", waiting.organization);\n }\n }\n save();\n return { tokens, identity: claims, returnTo: waiting.returnTo };\n },\n identity() {\n return claims;\n },\n organization() {\n return claims?.org ?? null;\n },\n organizations() {\n return claims?.orgs ?? [];\n },\n async switchOrganization(key, opts = {}) {\n window.location.assign(await authorizeUrl({ ...opts, organization: key }));\n },\n avatars() {\n return claims?.[\"masks:avatars\"] ?? null;\n },\n async photo(subject = claims?.sub) {\n if (!subject || !held)\n return null;\n const response = await call(await avatarUrl(subject, { style: \"photo\" }), {\n headers: {\n Authorization: `${held.token_type} ${held.access_token}`,\n Accept: \"image/*\",\n },\n });\n return response.ok ? await response.blob() : null;\n },\n refresh,\n async fetch(url, init = {}) {\n if (held?.refresh_token && expired())\n await refresh();\n const access = held?.access_token;\n const headers = new Headers(init.headers);\n if (access && held) {\n headers.set(\"Authorization\", `${held.token_type} ${access}`);\n for (const [name, value] of Object.entries(await proved(init.method ?? \"GET\", url, access))) {\n headers.set(name, value);\n }\n }\n return await call(url, { ...init, headers });\n },\n async proof(method, url) {\n return (await proved(method, url, held?.access_token)).DPoP ?? null;\n },\n async freshAccessToken(leeway = 30) {\n if (held?.refresh_token && expired(leeway))\n await refresh();\n return held?.access_token ?? null;\n },\n accessToken() {\n return held?.access_token ?? null;\n },\n tokens() {\n return held;\n },\n authorization() {\n return held ? `${held.token_type} ${held.access_token}` : null;\n },\n expired,\n async logout({ everywhere = false, postLogoutRedirectUri } = {}) {\n const leaving = held;\n generation += 1;\n refreshing = null;\n dpopKey = null;\n store.removeItem(PENDING);\n clear();\n await Promise.all([\n options.dpop ? forgetDpopKey() : undefined,\n leaving?.refresh_token\n ? revoke(leaving.refresh_token).catch(() => undefined)\n : undefined,\n ]);\n if (!everywhere)\n return;\n const { end_session_endpoint } = await discover();\n if (!end_session_endpoint) {\n throw Refused.of(\"publishes_nothing\", issuer, \"end_session_endpoint\");\n }\n const query = new URLSearchParams([[\"client_id\", clientId]]);\n if (leaving?.id_token)\n query.append(\"id_token_hint\", leaving.id_token);\n if (postLogoutRedirectUri) {\n query.append(\"post_logout_redirect_uri\", postLogoutRedirectUri);\n }\n window.location.assign(`${end_session_endpoint}?${query.toString()}`);\n },\n };\n return client;\n}\nfunction restore(store) {\n try {\n const raw = store.getItem(SESSION);\n const found = raw ? JSON.parse(raw) : null;\n return found?.tokens?.access_token ? found : null;\n }\n catch {\n return null;\n }\n}\n","const PLACEHOLDER = /%\\{(\\w+)\\}/g;\n\nlet held = {};\nlet plurals = new Intl.PluralRules(\"en\");\n\nexport function useCopy(copy, locale = \"en\") {\n held = copy ?? {};\n plurals = new Intl.PluralRules(locale);\n}\n\nfunction lookup(key) {\n return key\n .split(\".\")\n .reduce((found, part) => (found == null ? undefined : found[part]), held);\n}\n\nfunction fill(text, values) {\n return text.replace(PLACEHOLDER, (whole, name) =>\n values && Object.hasOwn(values, name) ? String(values[name]) : whole,\n );\n}\n\nexport function t(key, values) {\n const found = lookup(key);\n\n if (typeof found === \"string\") return fill(found, values);\n\n if (found && typeof found === \"object\" && values && \"count\" in values) {\n const form = found[plurals.select(Number(values.count))] ?? found.other;\n\n if (typeof form === \"string\") return fill(form, values);\n }\n\n return key;\n}\n","import { t } from \"./copy.js\";\n\nconst KEY = \"masks:manage:client\";\n\nexport const SCOPE = [\n \"openid\",\n \"profile\",\n \"email\",\n \"masks:manage\",\n \"masks:manage:security\",\n \"masks:manage:support\",\n \"masks:manage:read\",\n];\n\nfunction held(issuer) {\n try {\n return JSON.parse(localStorage.getItem(KEY) || \"null\")?.[issuer] || null;\n } catch {\n return null;\n }\n}\n\nfunction keep(issuer, clientId) {\n const all = JSON.parse(localStorage.getItem(KEY) || \"{}\");\n\n all[issuer] = clientId;\n localStorage.setItem(KEY, JSON.stringify(all));\n}\n\nexport function clientId(boot) {\n return held(boot.issuer) || boot.clientId || null;\n}\n\nexport function forget(boot) {\n const all = JSON.parse(localStorage.getItem(KEY) || \"{}\");\n\n delete all[boot.issuer];\n localStorage.setItem(KEY, JSON.stringify(all));\n}\n\nexport function callbackUri(boot) {\n return `${location.origin}${boot.root}/callback`;\n}\n\nexport function handshakeUrl(boot) {\n const query = new URLSearchParams([\n [\"client_name\", `Manage ${boot.tenant.name}`],\n [\"resource\", boot.resource],\n [\"scope\", SCOPE.join(\" \")],\n [\"return_to\", `${location.origin}${boot.root}`],\n [\"post_logout_redirect_uri\", `${location.origin}${boot.root}`],\n [\"token_endpoint_auth_method\", \"none\"],\n [\"redirect_uris\", callbackUri(boot)],\n ]);\n\n return `${boot.issuer}/handshake?${query.toString()}`;\n}\n\nexport async function redeem(boot, token) {\n const response = await fetch(`${boot.issuer}/register`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n Authorization: `Bearer ${token}`,\n },\n body: JSON.stringify({\n client_name: `Manage ${boot.tenant.name}`,\n redirect_uris: [callbackUri(boot)],\n token_endpoint_auth_method: \"none\",\n }),\n });\n\n const body = await response.json().catch(() => ({}));\n\n if (!response.ok) {\n throw new Error(\n body.error_description || body.error || t(\"pairing.registration_failed\"),\n );\n }\n\n if (body.client_secret) {\n throw new Error(t(\"pairing.secret_issued\"));\n }\n\n keep(boot.issuer, body.client_id);\n\n return body.client_id;\n}\n","import { createBrowserClient } from \"@masks/client\";\nimport { t } from \"./copy.js\";\nimport { callbackUri, clientId, forget, SCOPE } from \"./pairing.js\";\n\nfunction detach(variables) {\n const files = new Map();\n\n const walk = (value, path) => {\n if (value instanceof Blob) {\n files.set(path, value);\n return null;\n }\n\n if (Array.isArray(value))\n return value.map((one, at) => walk(one, `${path}.${at}`));\n\n if (value?.constructor === Object) {\n return Object.fromEntries(\n Object.entries(value).map(([key, one]) => [\n key,\n walk(one, `${path}.${key}`),\n ]),\n );\n }\n\n return value;\n };\n\n return { held: walk(variables, \"variables\"), files };\n}\n\nexport function createApi(boot) {\n const state = $state({\n ready: false,\n identity: null,\n failure: null,\n });\n\n let client = null;\n\n const build = () => {\n const held = clientId(boot);\n\n if (!held) return null;\n\n client ||= createBrowserClient({\n issuer: boot.issuer,\n clientId: held,\n redirectUri: callbackUri(boot),\n scope: SCOPE,\n resource: boot.resource,\n });\n\n return client;\n };\n\n const authorization = async () => {\n const held = build();\n\n if (!held) throw new Error(t(\"api.unregistered\"));\n\n if (held.expired(30)) await held.refresh();\n\n return held.authorization();\n };\n\n return {\n state,\n\n paired() {\n return Boolean(clientId(boot));\n },\n\n signedIn() {\n return Boolean(build()?.accessToken());\n },\n\n async authorize(returnTo) {\n await build().authorize({ returnTo });\n },\n\n async callback() {\n const answer = await build().callback();\n\n state.identity = answer.identity;\n state.ready = true;\n\n return answer;\n },\n\n async signOut() {\n const held = build();\n\n state.identity = null;\n\n if (!held) return null;\n\n const idToken = held.tokens()?.id_token;\n const document = await held.discover().catch(() => null);\n\n held.logout();\n\n if (!document?.end_session_endpoint) return null;\n\n const query = new URLSearchParams({\n client_id: clientId(boot),\n post_logout_redirect_uri: `${location.origin}${boot.root}`,\n });\n\n if (idToken) query.set(\"id_token_hint\", idToken);\n\n return `${document.end_session_endpoint}?${query}`;\n },\n\n unpair() {\n build()?.logout();\n forget(boot);\n client = null;\n },\n\n async query(document, variables = {}) {\n const { held, files } = detach(variables);\n const headers = {\n Accept: \"application/json\",\n Authorization: await authorization(),\n };\n let sent;\n\n if (files.size) {\n sent = new FormData();\n\n sent.append(\n \"operations\",\n JSON.stringify({ query: document, variables: held }),\n );\n sent.append(\n \"map\",\n JSON.stringify(\n Object.fromEntries(\n [...files.keys()].map((path, at) => [at, [path]]),\n ),\n ),\n );\n\n [...files.values()].forEach((file, at) => {\n sent.append(String(at), file);\n });\n } else {\n headers[\"Content-Type\"] = \"application/json\";\n sent = JSON.stringify({ query: document, variables });\n }\n\n const response = await fetch(boot.graphql, {\n method: \"POST\",\n headers,\n body: sent,\n });\n\n const body = await response.json().catch(() => ({}));\n\n if (response.status === 401 || response.status === 403) {\n throw new Error(\n body.error_description || body.error || t(\"api.refused\"),\n );\n }\n\n if (body.errors?.length) {\n throw new Error(body.errors.map((one) => one.message).join(\"; \"));\n }\n\n return body.data;\n },\n };\n}\n","import { getContext, setContext } from \"svelte\";\n\nconst ROUTER = Symbol(\"router\");\n\nexport function createRouter(root) {\n const state = $state({ path: location.pathname, search: location.search });\n\n const settle = () => {\n state.path = location.pathname;\n state.search = location.search;\n };\n\n addEventListener(\"popstate\", settle);\n\n return {\n state,\n\n get segments() {\n return state.path.slice(root.length).split(\"/\").filter(Boolean);\n },\n\n get query() {\n return new URLSearchParams(state.search);\n },\n\n href(to) {\n return `${root}${to}`;\n },\n\n go(to) {\n history.pushState({}, \"\", `${root}${to}`);\n settle();\n scrollTo({ top: 0 });\n },\n\n replace(to) {\n history.replaceState({}, \"\", `${root}${to}`);\n settle();\n },\n };\n}\n\nexport function provideRouter(router) {\n setContext(ROUTER, router);\n}\n\nexport function useRouter() {\n return getContext(ROUTER);\n}\n","<script>\n let { children } = $props();\n</script>\n\n<div class=\"sheet px-6 py-14 text-center\">\n <p class=\"mx-auto max-w-sm text-sm opacity-85\">{@render children()}</p>\n</div>\n","<script>\n import { useRouter } from \"../lib/router.svelte.js\";\n\n let { to, class: klass = \"link link-hover\", children, ...rest } = $props();\n\n const router = useRouter();\n\n function follow(event) {\n if (event.metaKey || event.ctrlKey || event.shiftKey || event.altKey) return;\n if (event.button !== 0) return;\n\n event.preventDefault();\n event.stopPropagation();\n\n router.go(to);\n }\n</script>\n\n<a {...rest} class={klass} href={router.href(to)} onclick={follow}>{@render children()}</a>\n","<script>\n import { t } from \"../lib/copy.js\";\n let { label = t(\"ui.loading\") } = $props();\n</script>\n\n<div class=\"grid place-items-center py-16\" role=\"status\">\n <span class=\"loading loading-spinner\"></span>\n <span class=\"sr-only\">{label}</span>\n</div>\n","<script>\n let { marks } = $props();\n\n const SHAPES = {\n manager: '<path d=\"M10 2.75 16 5v4.6c0 3.7-2.5 6.4-6 7.65-3.5-1.25-6-3.95-6-7.65V5z\"/>',\n key: '<circle cx=\"6.75\" cy=\"10\" r=\"3.25\"/><path d=\"M10 10h7.25M14.5 10v2.5M17.25 10v2\"/>',\n invited: '<rect x=\"2.75\" y=\"4.75\" width=\"14.5\" height=\"10.5\" rx=\"1.5\"/><path d=\"m3.25 5.5 6.75 5.25 6.75-5.25\"/>',\n unconfirmed: '<circle cx=\"10\" cy=\"10\" r=\"7\"/><path d=\"M10 6.25v4.5M10 13.75v.01\"/>',\n waiting: '<circle cx=\"10\" cy=\"10\" r=\"7\"/><path d=\"M10 6.25V10l2.75 1.75\"/>',\n help: '<circle cx=\"10\" cy=\"10\" r=\"7\"/><path d=\"M7.9 7.9a2.15 2.15 0 1 1 3 1.95c-.55.3-.9.75-.9 1.3v.35M10 13.75v.01\"/>',\n suspended: '<circle cx=\"10\" cy=\"10\" r=\"7\"/><path d=\"M8.1 7.25v5.5M11.9 7.25v5.5\"/>',\n blocked: '<circle cx=\"10\" cy=\"10\" r=\"7\"/><path d=\"m5.05 5.05 9.9 9.9\"/>',\n dynamic: '<path d=\"M7 3.25v3.5M13 3.25v3.5\"/><rect x=\"4.75\" y=\"6.75\" width=\"10.5\" height=\"5.5\" rx=\"1.5\"/><path d=\"M10 12.25v4.5\"/>',\n owns: '<circle cx=\"8\" cy=\"7\" r=\"3\"/><path d=\"M2.75 16.25c.6-2.9 2.75-4.5 5.25-4.5s4.65 1.6 5.25 4.5M15.5 6.5v5M13 9h5\"/>',\n signals: '<circle cx=\"10\" cy=\"10\" r=\"1.5\"/><path d=\"M6.75 13.25a4.6 4.6 0 0 1 0-6.5M13.25 6.75a4.6 4.6 0 0 1 0 6.5M4.4 15.6a7.9 7.9 0 0 1 0-11.2M15.6 4.4a7.9 7.9 0 0 1 0 11.2\"/>',\n delegates: '<path d=\"M11.5 3.75h4.75V8.5M16.25 3.75 9.5 10.5\"/><path d=\"M14.5 11.5v3.25c0 .7-.55 1.25-1.25 1.25h-8c-.7 0-1.25-.55-1.25-1.25v-8c0-.7.55-1.25 1.25-1.25H8.5\"/>',\n mail: '<rect x=\"2.75\" y=\"4.75\" width=\"14.5\" height=\"10.5\" rx=\"1.5\"/><path d=\"m3.25 5.5 6.75 5.25 6.75-5.25\"/>',\n archived: '<rect x=\"2.75\" y=\"4\" width=\"14.5\" height=\"3.5\" rx=\"1\"/><path d=\"M4.25 7.5v7.25c0 .7.55 1.25 1.25 1.25h9c.7 0 1.25-.55 1.25-1.25V7.5M8.25 10.5h3.5\"/>',\n };\n</script>\n\n{#if marks.length}\n <span class=\"marks\">\n {#each marks as [shape, label, tone] (shape)}\n <span class=\"mark mark-{tone ?? 'quiet'}\" role=\"img\" aria-label={label} title={label}>\n <svg viewBox=\"0 0 20 20\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n {@html SHAPES[shape]}\n </svg>\n </span>\n {/each}\n </span>\n{/if}\n","import { t } from \"./copy.js\";\n\nexport const blocked = (actor) =>\n actor.devices.some((device) => device.blockedAt);\n\nexport const actorMarks = (actor) =>\n [\n actor.scopes.some((scope) => scope.startsWith(\"masks:\")) && [\n \"manager\",\n t(\"actors.marks.manager\"),\n \"primary\",\n ],\n actor.otpEnabled && [\n \"key\",\n t(\"actors.marks.second_factor\", { count: actor.backupCodesRemaining }),\n \"good\",\n ],\n !actor.activated && [\"invited\", t(\"actors.marks.invited\"), \"info\"],\n actor.email &&\n !actor.emailVerified && [\n \"unconfirmed\",\n t(\"actors.marks.unconfirmed\"),\n \"warn\",\n ],\n actor.pendingApproval && [\"waiting\", t(\"actors.marks.waiting\"), \"warn\"],\n actor.recoveryRequestedAt && [\"help\", t(\"actors.marks.help\"), \"warn\"],\n actor.suspendedAt && [\"suspended\", t(\"actors.marks.suspended\"), \"bad\"],\n blocked(actor) && [\"blocked\", t(\"actors.marks.blocked\"), \"bad\"],\n ].filter(Boolean);\n","export function createPages(size = 25) {\n const state = $state({ cursors: [null], total: null });\n\n return {\n size,\n state,\n\n get cursor() {\n return state.cursors.at(-1);\n },\n\n get first() {\n return (state.cursors.length - 1) * size + 1;\n },\n\n reset() {\n state.cursors = [null];\n },\n\n forward(cursor) {\n state.cursors = [...state.cursors, cursor];\n },\n\n back() {\n if (state.cursors.length > 1) state.cursors = state.cursors.slice(0, -1);\n },\n\n counted(total) {\n state.total = total;\n },\n };\n}\n","<script>\n import { t } from \"../lib/copy.js\";\n let { pages, shown, busy = false, onpage } = $props();\n\n const first = $derived(pages.first);\n const last = $derived(first + shown - 1);\n const total = $derived(pages.state.total);\n const earlier = $derived(pages.state.cursors.length > 1);\n const later = $derived(total === null ? shown === pages.size : last < total);\n</script>\n\n{#if shown && (earlier || later)}\n <nav class=\"pager\" aria-label={t(\"ui.pager.label\")}>\n <span class=\"hint\">\n {total === null\n ? t(\"ui.pager.range\", { first: first.toLocaleString(), last: last.toLocaleString() })\n : t(\"ui.pager.range_of\", {\n first: first.toLocaleString(),\n last: last.toLocaleString(),\n total: total.toLocaleString(),\n })}\n </span>\n\n <div class=\"join\">\n <button\n type=\"button\"\n class=\"btn btn-sm join-item\"\n disabled={busy || !earlier}\n onclick={() => onpage(\"back\")}\n >{t(\"ui.pager.previous\")}</button>\n <button\n type=\"button\"\n class=\"btn btn-sm join-item\"\n disabled={busy || !later}\n onclick={() => onpage(\"forward\")}\n >{t(\"ui.pager.next\")}</button>\n </div>\n </nav>\n{/if}\n","export function createFeedback() {\n const state = $state({ notice: null, failure: null });\n\n const clear = () => {\n state.notice = null;\n state.failure = null;\n };\n\n const blame = (thrown) => {\n state.notice = null;\n state.failure = thrown?.message ?? String(thrown);\n };\n\n return {\n state,\n clear,\n blame,\n\n say(notice) {\n state.failure = null;\n state.notice = notice;\n },\n\n async attempt(work, notice = null) {\n clear();\n\n try {\n const answer = (await work()) ?? true;\n\n if (notice) state.notice = notice;\n\n return answer;\n } catch (thrown) {\n blame(thrown);\n\n return null;\n }\n },\n };\n}\n","export const NONE = \"—\";\n\nconst formatters = new Map();\n\nfunction locale() {\n return document.documentElement.lang || undefined;\n}\n\nfunction formatter(kind, make) {\n const key = `${kind}:${locale() ?? \"\"}`;\n\n if (!formatters.has(key)) formatters.set(key, make(locale()));\n\n return formatters.get(key);\n}\n\nconst DAY = () =>\n formatter(\n \"day\",\n (lang) =>\n new Intl.DateTimeFormat(lang, {\n day: \"numeric\",\n month: \"short\",\n year: \"numeric\",\n }),\n );\n\nconst MOMENT = () =>\n formatter(\n \"moment\",\n (lang) =>\n new Intl.DateTimeFormat(lang, {\n day: \"numeric\",\n month: \"short\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n }),\n );\n\nconst RELATIVE = () =>\n formatter(\n \"relative\",\n (lang) => new Intl.RelativeTimeFormat(lang, { numeric: \"auto\" }),\n );\n\nconst STEPS = [\n [\"year\", 31536000000],\n [\"month\", 2592000000],\n [\"week\", 604800000],\n [\"day\", 86400000],\n [\"hour\", 3600000],\n [\"minute\", 60000],\n];\n\nfunction parsed(iso) {\n if (!iso) return null;\n\n const at = new Date(iso);\n\n return Number.isNaN(at.getTime()) ? null : at;\n}\n\nexport function day(iso, fallback = NONE) {\n const at = parsed(iso);\n\n return at ? DAY().format(at) : fallback;\n}\n\nexport function moment(iso, fallback = NONE) {\n const at = parsed(iso);\n\n return at ? MOMENT().format(at) : fallback;\n}\n\nexport function since(iso, fallback = NONE) {\n const at = parsed(iso);\n\n if (!at) return fallback;\n\n const gap = at.getTime() - Date.now();\n\n for (const [unit, size] of STEPS) {\n if (Math.abs(gap) >= size) {\n return RELATIVE().format(Math.round(gap / size), unit);\n }\n }\n\n return RELATIVE().format(Math.round(gap / 1000), \"second\");\n}\n\nexport function joined(values, fallback = NONE) {\n const kept = (values ?? []).filter(Boolean);\n\n return kept.length ? kept.join(\" \") : fallback;\n}\n","<script>\n import { t } from \"../lib/copy.js\";\n let { text, label = t(\"ui.more_about\") } = $props();\n\n const id = $props.id();\n</script>\n\n<span class=\"tip\">\n <button type=\"button\" class=\"tip-mark\" aria-label={label} aria-describedby={id}>?</button>\n <span class=\"tip-body\" role=\"tooltip\" {id}>{text}</span>\n</span>\n","<script>\n import { t } from \"../lib/copy.js\";\n import Tip from \"./Tip.svelte\";\n\n let { title = null, lede = null, help = null, row = false, actions, children } = $props();\n</script>\n\n<section class=\"section\" class:section-row={row}>\n {#if title || lede || actions}\n <div class=\"section-head\">\n <div class=\"flex min-w-0 flex-col gap-1.5\">\n {#if title}\n <div class=\"flex items-center gap-2\">\n <h2 class=\"subhead\">{title}</h2>\n {#if help}<Tip text={help} label={t(\"ui.about\", { title: title.toLowerCase() })} />{/if}\n </div>\n {/if}\n {#if lede}<p class=\"deck-sm\">{lede}</p>{/if}\n </div>\n\n {#if actions}\n <div class=\"flex min-w-0 max-w-full flex-wrap items-center gap-2\">{@render actions()}</div>\n {/if}\n </div>\n {/if}\n\n <div class=\"section-body\">{@render children()}</div>\n</section>\n","<script>\n import { useRouter } from \"../lib/router.svelte.js\";\n\n let { to, children } = $props();\n\n const router = useRouter();\n\n function follow(event) {\n if (event.target.closest(\"a, button, input, label\")) return;\n if (getSelection()?.toString()) return;\n\n router.go(to);\n }\n</script>\n\n<tr class=\"hover cursor-pointer\" onclick={follow}>{@render children()}</tr>\n","<script>\n import { t } from \"../lib/copy.js\";\n let { value = $bindable(\"\"), placeholder, label, onsearch } = $props();\n</script>\n\n<div class=\"join w-full sm:w-auto\">\n <input\n class=\"input input-sm join-item w-full sm:w-48 md:w-56\"\n type=\"search\"\n aria-label={label}\n {placeholder}\n bind:value\n onkeydown={(event) => event.key === \"Enter\" && onsearch()}\n />\n <button type=\"button\" class=\"btn btn-sm join-item\" onclick={onsearch}>{t(\"ui.search\")}</button>\n</div>\n","<script>\n import Empty from \"./Empty.svelte\";\n\n let { columns, count, empty, rows } = $props();\n\n const heads = $derived(\n columns.map((column) => (typeof column === \"string\" ? { label: column } : column)),\n );\n</script>\n\n{#if count === 0}\n <Empty>{empty}</Empty>\n{:else}\n <div class=\"sheet overflow-x-auto\">\n <table class=\"table\">\n <thead>\n <tr>\n {#each heads as head, index (index)}\n <th\n class=\"{head.right ? 'text-right' : ''} {head.hide ? 'hidden md:table-cell' : ''}\"\n >{head.label ?? \"\"}</th>\n {/each}\n </tr>\n </thead>\n <tbody>{@render rows()}</tbody>\n </table>\n </div>\n{/if}\n","<script>\n import { t } from \"./lib/copy.js\";\n import { moment, since } from \"./lib/format.js\";\n import Section from \"./ui/Section.svelte\";\n import Link from \"./ui/Link.svelte\";\n import Row from \"./ui/Row.svelte\";\n import Search from \"./ui/Search.svelte\";\n import Spinner from \"./ui/Spinner.svelte\";\n import Table from \"./ui/Table.svelte\";\n\n let { api, feedback } = $props();\n\n const LENSES = [\n [\"allowed\", t(\"devices.lenses.allowed\"), { blocked: false }],\n [\"blocked\", t(\"devices.lenses.blocked\"), { blocked: true }],\n [\"unattached\", t(\"devices.lenses.unattached\"), { unattached: true }],\n ];\n\n const QUERY = `\n query Devices($blocked: Boolean, $unattached: Boolean, $agent: String, $limit: Int) {\n devices(blocked: $blocked, unattached: $unattached, agent: $agent, limit: $limit) {\n id label category known ipAddress userAgent lastSeenAt blockedAt\n actors { uuid identifier }\n sessions { id }\n }\n }\n `;\n\n const LIMIT = 100;\n\n const COLUMNS = [\n \"\",\n t(\"devices.columns.device\"),\n { label: t(\"devices.columns.who\"), hide: true },\n { label: t(\"devices.columns.ip_address\"), hide: true },\n t(\"devices.columns.last_seen\"),\n ];\n\n let devices = $state([]);\n let loading = $state(true);\n let lens = $state(\"allowed\");\n let search = $state(\"\");\n let agent = $state(\"\");\n let chosen = $state(new Set());\n let refuse = $state(false);\n let busy = $state(false);\n let section = $state(null);\n\n const narrowing = $derived(LENSES.find(([key]) => key === lens)?.[2] ?? {});\n\n async function load() {\n loading = true;\n\n const data = await feedback.attempt(() =>\n api.query(QUERY, {\n blocked: narrowing.blocked ?? null,\n unattached: narrowing.unattached ?? null,\n agent: agent || null,\n limit: LIMIT,\n }),\n );\n\n loading = false;\n\n if (data) {\n devices = data.devices;\n chosen = new Set();\n }\n }\n\n load().then(() => {\n if (location.hash === \"#devices\") section?.scrollIntoView();\n });\n\n function look(key) {\n lens = key;\n load();\n }\n\n function filter() {\n agent = search.trim();\n refuse = false;\n load();\n }\n\n function clearFilter() {\n search = \"\";\n filter();\n }\n\n function toggle(id) {\n const next = new Set(chosen);\n\n next.has(id) ? next.delete(id) : next.add(id);\n chosen = next;\n }\n\n const all = $derived(devices.length > 0 && chosen.size === devices.length);\n\n function toggleAll() {\n chosen = all ? new Set() : new Set(devices.map((device) => device.id));\n }\n\n const blocking = $derived(lens !== \"blocked\");\n\n function outcome(count, spared) {\n const done = t(blocking ? \"devices.blocked_count\" : \"devices.unblocked_count\", { count });\n\n return spared ? t(\"devices.spared\", { done }) : done;\n }\n\n async function bulk(variables, question) {\n if (!confirm(question)) return;\n\n busy = true;\n\n const mutation = blocking\n ? `mutation Bulk($ids: [ID!], $agent: String, $refuse: Boolean) {\n blockDevices(ids: $ids, agent: $agent, refuse: $refuse) { count spared }\n }`\n : `mutation Bulk($ids: [ID!]!) { unblockDevices(ids: $ids) { count } }`;\n\n const data = await feedback.attempt(() => api.query(mutation, variables));\n\n busy = false;\n\n if (!data) return;\n\n const answer = data.blockDevices ?? data.unblockDevices;\n\n await load();\n feedback.say(\n refuse && variables.agent\n ? t(\"devices.refused\", { done: outcome(answer.count, answer.spared), agent: variables.agent })\n : outcome(answer.count, answer.spared),\n );\n }\n\n const blockChosen = () =>\n bulk(\n { ids: [...chosen] },\n blocking\n ? t(\"devices.block_chosen_question\", { count: chosen.size })\n : t(\"devices.unblock_chosen_question\", { count: chosen.size }),\n );\n\n const blockMatching = () => {\n const question = t(\"devices.block_matching_question\", { agent });\n\n return bulk({ agent, refuse }, refuse ? t(\"devices.block_matching_refuse\", { question }) : question);\n };\n\n const nothing = $derived(\n lens === \"blocked\"\n ? t(\"devices.empty.blocked\")\n : lens === \"unattached\"\n ? t(\"devices.empty.unattached\")\n : t(\"devices.empty.allowed\"),\n );\n</script>\n\n<div id=\"devices\" bind:this={section} class=\"scroll-mt-20\">\n <Section title={t(\"devices.title\")}>\n {#snippet actions()}\n <Search\n bind:value={search}\n label={t(\"devices.filter_label\")}\n placeholder=\"curl, python-requests\"\n onsearch={filter}\n />\n <div class=\"range\" role=\"group\" aria-label={t(\"devices.which\")}>\n {#each LENSES as [key, label] (key)}\n <button type=\"button\" aria-pressed={lens === key} onclick={() => look(key)}>{label}</button>\n {/each}\n </div>\n {/snippet}\n\n {#if agent && blocking}\n <div class=\"alert alert-warning alert-soft flex-col items-start gap-2\">\n <p class=\"text-sm\">\n {t(\"devices.showing\")} <code class=\"font-mono\">{agent}</code>.\n <button type=\"button\" class=\"link\" onclick={clearFilter}>{t(\"devices.clear\")}</button>\n </p>\n <label class=\"flex items-center gap-2 text-sm\">\n <input type=\"checkbox\" class=\"checkbox\" bind:checked={refuse} />\n {t(\"devices.refuse_agent\")}\n </label>\n <button\n type=\"button\"\n class=\"btn btn-sm btn-error btn-outline\"\n disabled={busy}\n onclick={blockMatching}\n >\n {t(\"devices.block_matching\")}\n </button>\n </div>\n {:else if agent}\n <p class=\"text-sm opacity-85\">\n {t(\"devices.showing_blocked\")} <code class=\"font-mono\">{agent}</code>.\n <button type=\"button\" class=\"link\" onclick={clearFilter}>{t(\"devices.clear\")}</button>\n </p>\n {/if}\n\n {#if devices.length}\n <div class=\"flex flex-wrap items-center gap-3\">\n <label class=\"flex items-center gap-2 text-sm\">\n <input\n type=\"checkbox\"\n class=\"checkbox\"\n checked={all}\n indeterminate={chosen.size > 0 && !all}\n onchange={toggleAll}\n />\n {chosen.size\n ? t(\"devices.chosen\", { count: chosen.size })\n : t(\"devices.choose_all\", { count: devices.length })}\n </label>\n {#if chosen.size}\n <button\n type=\"button\"\n class=\"btn btn-sm {blocking ? 'btn-error btn-outline' : 'btn-outline'}\"\n disabled={busy}\n onclick={blockChosen}\n >\n {t(blocking ? \"devices.block_count\" : \"devices.unblock_count\", { count: chosen.size })}\n </button>\n {/if}\n {#if devices.length === LIMIT}\n <span class=\"hint\">{t(\"devices.newest\", { count: LIMIT })}</span>\n {/if}\n </div>\n {/if}\n\n {#if loading && devices.length === 0}\n <Spinner />\n {:else}\n <Table columns={COLUMNS} count={devices.length} empty={nothing}>\n {#snippet rows()}\n {#each devices as device (device.id)}\n <Row to={`/actors/devices/${device.id}`}>\n <td class=\"w-0\">\n <input\n type=\"checkbox\"\n class=\"checkbox\"\n aria-label={t(\"devices.choose\", { label: device.label })}\n checked={chosen.has(device.id)}\n onchange={() => toggle(device.id)}\n />\n </td>\n <td class=\"max-w-[18rem]\">\n <Link to={`/actors/devices/${device.id}`} class=\"link link-hover font-medium\">\n {device.label}\n </Link>\n <div class=\"flex flex-wrap items-center gap-1.5\">\n <span class=\"truncate text-xs opacity-75\">{device.category}</span>\n {#if device.blockedAt}\n <span class=\"badge badge-error badge-xs\">{t(\"devices.blocked\")}</span>\n {:else if !device.known}\n <span class=\"badge badge-warning badge-xs\">{t(\"devices.unrecognised\")}</span>\n {/if}\n {#if device.sessions.length}\n <span class=\"badge badge-success badge-xs\">{t(\"devices.signed_in\")}</span>\n {/if}\n </div>\n {#if agent && device.userAgent}\n <div class=\"truncate font-mono text-xs opacity-80\" title={device.userAgent}>\n {device.userAgent}\n </div>\n {/if}\n </td>\n\n <td class=\"hidden max-w-[16rem] text-xs md:table-cell\">\n {#if device.actors.length}\n <div class=\"truncate\">\n {#each device.actors as actor, at (actor.uuid)}{at ? \", \" : \"\"}<Link\n to={`/actors/${actor.uuid}`}\n class=\"link link-hover\">{actor.identifier}</Link\n >{/each}\n </div>\n {:else}\n <span class=\"opacity-80\">{t(\"devices.nobody_yet\")}</span>\n {/if}\n </td>\n\n <td class=\"hidden font-mono text-xs opacity-85 md:table-cell\">\n {device.ipAddress ?? \"—\"}\n </td>\n\n <td class=\"text-xs whitespace-nowrap opacity-85\" title={moment(device.lastSeenAt)}>\n {since(device.lastSeenAt)}\n </td>\n </Row>\n {/each}\n {/snippet}\n </Table>\n {/if}\n </Section>\n</div>\n","<script>\n import { t } from \"./lib/copy.js\";\n let { value = [], available = [], onchange, disabled = false } = $props();\n\n const SHOWN = 40;\n const FOLDED = 24;\n const id = `scopes-${Math.random().toString(36).slice(2, 10)}`;\n\n let query = $state(\"\");\n let open = $state(false);\n let active = $state(0);\n let unfolded = $state(false);\n\n const held = $derived([...new Set(value)].sort());\n const needle = $derived(query.trim().toLowerCase());\n const offered = $derived(\n [...new Set(available)]\n .filter((scope) => !value.includes(scope) && (!needle || scope.toLowerCase().includes(needle)))\n .sort((a, b) => rank(a) - rank(b) || a.localeCompare(b)),\n );\n const listed = $derived(offered.slice(0, SHOWN));\n const typed = $derived(query.trim());\n const novel = $derived(typed !== \"\" && !value.includes(typed) && !available.includes(typed));\n const choices = $derived(novel ? [...listed, typed] : listed);\n const shown = $derived(unfolded || held.length <= FOLDED ? held : held.slice(0, FOLDED));\n\n $effect(() => {\n if (active >= choices.length) active = Math.max(choices.length - 1, 0);\n });\n\n function rank(scope) {\n return needle && scope.toLowerCase().startsWith(needle) ? 0 : 1;\n }\n\n function add(scope) {\n if (!scope || value.includes(scope)) return;\n\n onchange([...value, scope]);\n query = \"\";\n active = 0;\n }\n\n function remove(scope) {\n onchange(value.filter((one) => one !== scope));\n }\n\n function keydown(event) {\n if (event.key === \"ArrowDown\") {\n event.preventDefault();\n open = true;\n active = Math.min(active + 1, choices.length - 1);\n } else if (event.key === \"ArrowUp\") {\n event.preventDefault();\n active = Math.max(active - 1, 0);\n } else if (event.key === \"Enter\") {\n event.preventDefault();\n add(open && choices.length ? choices[active] : typed);\n } else if (event.key === \"Escape\") {\n open = false;\n }\n }\n</script>\n\n<div class=\"scope-picker\">\n {#if !disabled}\n <div class=\"scope-picker-field\">\n <input\n class=\"input input-sm w-full font-mono\"\n role=\"combobox\"\n aria-expanded={open && choices.length > 0}\n aria-controls={`${id}-list`}\n aria-autocomplete=\"list\"\n aria-activedescendant={open && choices.length ? `${id}-${active}` : undefined}\n aria-label={t(\"scopes_editor.label\")}\n placeholder={t(\"scopes_editor.placeholder\", { count: available.length })}\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n bind:value={query}\n oninput={() => {\n open = true;\n active = 0;\n }}\n onfocus={() => (open = true)}\n onblur={() => (open = false)}\n onkeydown={keydown}\n />\n\n {#if open && choices.length}\n <ul class=\"scope-picker-list\" id={`${id}-list`} role=\"listbox\" aria-label={t(\"scopes_editor.offered\")}>\n {#each choices as scope, index (scope)}\n <li\n id={`${id}-${index}`}\n role=\"option\"\n aria-selected={index === active}\n class=\"scope-picker-option\"\n class:scope-picker-active={index === active}\n onmousedown={(event) => {\n event.preventDefault();\n add(scope);\n }}\n onmousemove={() => (active = index)}\n >\n {#if novel && index === choices.length - 1}\n <span class=\"scope-picker-new\">{t(\"scopes_editor.add_new\")}</span>\n {/if}\n <span class=\"scope font-mono\" class:scope-privileged={scope.startsWith(\"masks:\")}>{scope}</span>\n </li>\n {/each}\n\n {#if offered.length > SHOWN}\n <li class=\"scope-picker-more\" role=\"presentation\">\n {t(\"scopes_editor.more\", { count: offered.length - SHOWN })}\n </li>\n {/if}\n </ul>\n {/if}\n </div>\n {/if}\n\n {#if held.length}\n <ul class=\"scope-picker-held\" aria-label={t(\"scopes_editor.held\", { count: held.length })}>\n {#each shown as scope (scope)}\n <li class=\"badge font-mono text-xs {scope.startsWith('masks:') ? 'badge-error badge-soft' : 'badge-neutral badge-soft'}\">\n {scope}\n {#if !disabled}\n <button\n type=\"button\"\n class=\"scope-picker-remove\"\n aria-label={t(\"scopes_editor.remove\", { scope })}\n onclick={() => remove(scope)}\n >×</button>\n {/if}\n </li>\n {/each}\n\n {#if held.length > FOLDED}\n <li>\n <button type=\"button\" class=\"btn btn-ghost btn-xs\" onclick={() => (unfolded = !unfolded)}>\n {unfolded ? t(\"scopes_editor.fewer\") : t(\"scopes_editor.all\", { count: held.length })}\n </button>\n </li>\n {/if}\n </ul>\n {:else}\n <p class=\"hint\">{t(\"scopes_editor.none\")}</p>\n {/if}\n</div>\n","<script>\n import { t } from \"../lib/copy.js\";\n let {\n label,\n value = $bindable(\"\"),\n type = \"text\",\n onsave = null,\n save = t(\"ui.save\"),\n ...rest\n } = $props();\n</script>\n\n<label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{label}</span>\n\n {#if onsave}\n <div class=\"join\">\n <input class=\"input input-sm join-item w-full\" {type} bind:value {...rest} />\n <button type=\"button\" class=\"btn btn-sm join-item\" onclick={onsave}>{save}</button>\n </div>\n {:else}\n <input class=\"input input-sm w-full\" {type} bind:value {...rest} />\n {/if}\n</label>\n","<script>\n let { feedback } = $props();\n</script>\n\n{#if feedback.notice}\n <div class=\"alert alert-success alert-soft text-sm\" role=\"status\">{feedback.notice}</div>\n{/if}\n\n{#if feedback.failure}\n <div class=\"alert alert-error alert-soft text-sm\" role=\"alert\">{feedback.failure}</div>\n{/if}\n","<script>\n import Link from \"./Link.svelte\";\n\n let { title, lede = null, id = null, back = null, hero = false, lead, after, actions, children } = $props();\n\n let heading;\n\n $effect(() => {\n document.title = title;\n });\n\n $effect(() => {\n heading?.focus({ preventScroll: true });\n });\n</script>\n\n<div class=\"console-page\">\n {#if back}\n <div>\n <Link to={back.to} class=\"link link-hover text-sm opacity-85\">&larr; {back.label}</Link>\n </div>\n {/if}\n\n <header class=\"flex flex-wrap items-end justify-between gap-x-6 gap-y-4\">\n <div class=\"flex min-w-0 items-start gap-4\">\n {#if lead}{@render lead()}{/if}\n\n <div class=\"flex min-w-0 flex-col gap-2\">\n <div class=\"flex min-w-0 flex-wrap items-center gap-x-3 gap-y-1\">\n <h1 class=\"headline min-w-0 break-words outline-none\" class:headline-hero={hero} tabindex=\"-1\" bind:this={heading}>{title}</h1>\n {#if after}{@render after()}{/if}\n </div>\n\n {#if id}\n <p class=\"stamp\">{id}</p>\n {/if}\n\n {#if lede}\n <p class=\"deck\">{lede}</p>\n {/if}\n </div>\n </div>\n\n {#if actions}\n <div class=\"flex w-full flex-wrap items-center gap-2 sm:w-auto\">{@render actions()}</div>\n {/if}\n </header>\n\n {@render children()}\n</div>\n","<script>\n import Marks from \"./ui/Marks.svelte\";\n import { actorMarks } from \"./lib/marks.js\";\n import { t } from \"./lib/copy.js\";\n import { useRouter } from \"./lib/router.svelte.js\";\n import { createPages } from \"./lib/pages.svelte.js\";\n import Pager from \"./ui/Pager.svelte\";\n import { createFeedback } from \"./lib/feedback.svelte.js\";\n import { day } from \"./lib/format.js\";\n import Devices from \"./Devices.svelte\";\n import ScopesEditor from \"./ScopesEditor.svelte\";\n import Section from \"./ui/Section.svelte\";\n import Field from \"./ui/Field.svelte\";\n import Link from \"./ui/Link.svelte\";\n import Notices from \"./ui/Notices.svelte\";\n import Page from \"./ui/Page.svelte\";\n import Row from \"./ui/Row.svelte\";\n import Search from \"./ui/Search.svelte\";\n import Spinner from \"./ui/Spinner.svelte\";\n import Table from \"./ui/Table.svelte\";\n\n let { api } = $props();\n\n const PRESENCE = `\n sessions { id }\n devices { id blockedAt }\n `;\n\n const pages = createPages();\n\n const LENSES = [\n [\"everyone\", t(\"actors.lenses.everyone\"), {}],\n [\"invited\", t(\"actors.lenses.invited\"), { activated: false }],\n [\"waiting\", t(\"actors.lenses.waiting\"), { pendingApproval: true }],\n [\"help\", t(\"actors.lenses.help\"), { recoveryRequested: true }],\n [\"managers\", t(\"actors.lenses.managers\"), { holds: \"masks:manage\" }],\n [\"suspended\", t(\"actors.lenses.suspended\"), { suspended: true }],\n ];\n\n const QUERY = `\n query Actors(\n $search: String, $activated: Boolean, $holds: String, $pendingApproval: Boolean,\n $recoveryRequested: Boolean, $suspended: Boolean, $afterId: ID, $limit: Int\n ) {\n actors(\n search: $search, activated: $activated, holds: $holds, pendingApproval: $pendingApproval,\n recoveryRequested: $recoveryRequested, suspended: $suspended, afterId: $afterId, limit: $limit\n ) {\n uuid identifier nickname name email emailVerified otpEnabled backupCodesRemaining\n lastLoginAt scopes activated invitedAt pendingApproval recoveryRequestedAt suspendedAt\n avatars { photo identicon }\n ${PRESENCE}\n }\n actorCount(\n search: $search, activated: $activated, holds: $holds, pendingApproval: $pendingApproval,\n recoveryRequested: $recoveryRequested, suspended: $suspended\n )\n }\n `;\n\n const CREATE = `\n mutation Create($nickname: String, $email: String, $password: String, $scopes: [String!]) {\n createActor(nickname: $nickname, email: $email, password: $password, scopes: $scopes) {\n delivered url actor { uuid identifier activated }\n }\n }\n `;\n\n const STANDARD = [\"openid\", \"profile\", \"email\", \"offline_access\", \"identities\"];\n\n const COLUMNS = [\n t(\"actors.columns.actor\"),\n { label: t(\"actors.columns.signed_in_on\"), hide: true },\n { label: t(\"actors.columns.last_seen\"), hide: true },\n ];\n\n const feedback = createFeedback();\n\n let search = $state(\"\");\n let actors = $state([]);\n let loading = $state(true);\n const router = useRouter();\n\n let lens = $state(LENSES.find(([key]) => key === router.query.get(\"lens\"))?.[0] ?? \"everyone\");\n\n const narrowing = $derived(LENSES.find(([key]) => key === lens)?.[2] ?? {});\n\n let adding = $state(false);\n let inviting = $state(false);\n let addresses = $state(\"\");\n let joining = $state([]);\n let groups = $state([]);\n let invited = $state(null);\n\n let groupsLoaded = false;\n\n const invitedCount = $derived(invited?.filter((one) => one.outcome === \"invited\").length ?? 0);\n\n async function openInvites() {\n inviting = true;\n invited = null;\n\n if (groupsLoaded) return;\n\n const data = await feedback.attempt(() => api.query(\"query Groups { groups { key name } }\"));\n\n if (!data) return;\n\n groups = data.groups;\n groupsLoaded = true;\n }\n\n async function inviteMany() {\n busy = true;\n\n const data = await feedback.attempt(() =>\n api.query(\n `mutation Invite($emails: [String!]!, $groups: [String!]) {\n inviteActors(emails: $emails, groups: $groups) { outcomes { email outcome url } }\n }`,\n { emails: addresses.split(/[\\s,;]+/).filter(Boolean), groups: joining },\n ),\n );\n\n busy = false;\n\n if (!data) return;\n\n invited = data.inviteActors.outcomes;\n inviting = false;\n addresses = \"\";\n again();\n }\n let nickname = $state(\"\");\n let email = $state(\"\");\n let password = $state(\"\");\n let scopes = $state([...STANDARD]);\n let supported = $state([]);\n let minimum = $state(8);\n let busy = $state(false);\n let created = $state(null);\n\n async function load() {\n loading = true;\n\n try {\n const data = await api.query(QUERY, {\n search: search.trim() || null,\n activated: narrowing.activated ?? null,\n holds: narrowing.holds ?? null,\n pendingApproval: narrowing.pendingApproval ?? null,\n recoveryRequested: narrowing.recoveryRequested ?? null,\n suspended: narrowing.suspended ?? null,\n afterId: pages.cursor,\n limit: pages.size,\n });\n\n actors = data.actors;\n pages.counted(data.actorCount);\n } catch (thrown) {\n feedback.blame(thrown);\n } finally {\n loading = false;\n }\n }\n\n function again() {\n pages.reset();\n load();\n }\n\n function turn(direction) {\n if (direction === \"forward\") pages.forward(actors.at(-1)?.uuid);\n else pages.back();\n\n load();\n }\n\n function look(chosen) {\n lens = chosen;\n router.replace(chosen === \"everyone\" ? \"/actors\" : `/actors?lens=${chosen}`);\n again();\n }\n\n load();\n\n\n async function open() {\n nickname = \"\";\n email = \"\";\n password = \"\";\n scopes = [...STANDARD];\n created = null;\n adding = true;\n feedback.clear();\n\n if (supported.length) return;\n\n const data = await feedback.attempt(() =>\n api.query(\"query Scopes { scopesSupported minimumPassword }\"),\n );\n\n if (data) {\n supported = data.scopesSupported;\n minimum = data.minimumPassword;\n }\n }\n\n function close() {\n adding = false;\n feedback.clear();\n }\n\n async function send() {\n busy = true;\n\n const data = await feedback.attempt(() =>\n api.query(CREATE, {\n nickname: nickname.trim() || null,\n email: email.trim() || null,\n password: password || null,\n scopes,\n }),\n );\n\n busy = false;\n\n if (!data) return;\n\n created = data.createActor;\n adding = false;\n\n pages.reset();\n await load();\n }\n\n const presence = (actor) => {\n const parts = [\n t(\"actors.sessions\", { count: actor.sessions.length }),\n t(\"actors.devices\", { count: actor.devices.length }),\n ];\n\n return parts.join(\" · \");\n };\n</script>\n\n<Page title={t(\"actors.title\")}>\n {#snippet actions()}\n <div class=\"range\" role=\"group\" aria-label={t(\"actors.who\")}>\n {#each LENSES as [key, label] (key)}\n <button type=\"button\" aria-pressed={lens === key} onclick={() => look(key)}>{label}</button>\n {/each}\n </div>\n\n <Search\n bind:value={search}\n label={t(\"actors.search\")}\n placeholder={t(\"actors.search_placeholder\")}\n onsearch={again}\n />\n <button type=\"button\" class=\"btn btn-sm\" onclick={openInvites}>{t(\"actors.invite_many\")}</button>\n <button type=\"button\" class=\"btn btn-primary btn-sm\" onclick={open}>{t(\"actors.add\")}</button>\n {/snippet}\n\n <Notices feedback={feedback.state} />\n\n {#if inviting}\n <Section title={t(\"actors.invites.title\")} lede={t(\"actors.invites.lede\")}>\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"actors.invites.addresses\")}</span>\n <textarea class=\"textarea w-full font-mono text-sm\" rows=\"6\" bind:value={addresses}></textarea>\n </label>\n\n {#if groups.length}\n <fieldset class=\"flex flex-col gap-1\">\n <legend class=\"field-label\">{t(\"actors.invites.groups\")}</legend>\n {#each groups as group (group.key)}\n <label class=\"flex items-center gap-2 text-sm\">\n <input type=\"checkbox\" class=\"checkbox checkbox-sm\" value={group.key} bind:group={joining} />\n {group.name}\n </label>\n {/each}\n </fieldset>\n {/if}\n\n <div class=\"flex flex-wrap gap-2\">\n <button type=\"button\" class=\"btn btn-primary btn-sm\" disabled={busy || !addresses.trim()} onclick={inviteMany}>\n {busy ? t(\"actors.form.adding\") : t(\"actors.invites.send\")}\n </button>\n <button type=\"button\" class=\"btn btn-ghost btn-sm\" onclick={() => (inviting = false)}>{t(\"actors.form.cancel\")}</button>\n </div>\n </Section>\n {/if}\n\n {#if invited}\n <Section title={t(\"actors.invites.done\", { count: invitedCount })}>\n <ul class=\"flex flex-col gap-1 text-sm\">\n {#each invited as one (one.email)}\n <li class=\"flex flex-wrap items-baseline gap-x-2\">\n <span class=\"font-mono\">{one.email}</span>\n <span class=\"opacity-80\">{t(`actors.invites.outcomes.${one.outcome}`)}</span>\n {#if one.url}<code class=\"tray px-1 text-xs break-all\">{one.url}</code>{/if}\n </li>\n {/each}\n </ul>\n </Section>\n {/if}\n\n {#if adding}\n <Section title={t(\"actors.add\")}>\n <div class=\"grid gap-3 sm:grid-cols-2\">\n <Field\n label={t(\"actors.form.nickname\")}\n bind:value={nickname}\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n placeholder=\"ada\"\n />\n <Field label={t(\"actors.form.email\")} type=\"email\" bind:value={email} placeholder=\"ada@example.com\" />\n </div>\n\n <Field\n label={t(\"actors.form.password\")}\n type=\"password\"\n bind:value={password}\n autocomplete=\"new-password\"\n placeholder={t(\"actors.form.password_placeholder\")}\n />\n\n {#if password}\n <p class=\"hint\">{t(\"actors.form.minimum\", { count: minimum })}</p>\n {/if}\n\n <div class=\"flex flex-col gap-2\">\n <span class=\"legend\">{t(\"actors.form.scopes\")}</span>\n <ScopesEditor\n value={scopes}\n available={supported}\n onchange={(chosen) => (scopes = chosen)}\n />\n </div>\n\n <div class=\"flex gap-2\">\n <button\n type=\"button\"\n class=\"btn btn-primary btn-sm\"\n disabled={busy || !(nickname.trim() || email.trim())}\n onclick={send}\n >\n {busy\n ? t(\"actors.form.adding\")\n : password\n ? t(\"actors.form.create\")\n : t(\"actors.form.invite\")}\n </button>\n <button type=\"button\" class=\"btn btn-ghost btn-sm\" onclick={close}>{t(\"actors.form.cancel\")}</button>\n </div>\n </Section>\n {/if}\n\n {#if created}\n <Section title={created.actor.activated ? t(\"actors.created.account\") : t(\"actors.created.invitation\")}>\n <p class=\"text-sm opacity-85\">\n {#if created.actor.activated}\n {t(\"actors.created.can_sign_in\", { identifier: created.actor.identifier })}{created.url\n ? ` ${t(\"actors.created.confirm_link\")}`\n : \"\"}\n {:else if created.delivered}\n {t(\"actors.created.emailed\")}\n {:else}\n {t(\"actors.created.pass_along\")}\n {/if}\n </p>\n\n {#if created.url}\n <p class=\"tray px-2 py-1 font-mono text-xs break-all\">{created.url}</p>\n {/if}\n </Section>\n {/if}\n\n {#if loading && actors.length === 0}\n <Spinner />\n {:else}\n <Table\n columns={COLUMNS}\n count={actors.length}\n empty={search.trim()\n ? t(\"actors.empty.search\", { search: search.trim() })\n : t(`actors.empty.${lens}`)}\n >\n {#snippet rows()}\n {#each actors as actor (actor.uuid)}\n <Row to={`/actors/${actor.uuid}`}>\n <td class=\"w-full max-w-0 md:w-auto md:max-w-none\">\n <div class=\"flex items-center gap-3\">\n <img\n src={`${actor.avatars.photo ?? actor.avatars.identicon}?size=32`}\n width=\"32\"\n height=\"32\"\n alt=\"\"\n class=\"size-8 shrink-0 rounded object-cover\"\n class:drawn={!actor.avatars.photo}\n />\n <div class=\"min-w-0\">\n <div class=\"flex min-w-0 items-center gap-2\">\n <Link to={`/actors/${actor.uuid}`} class=\"link link-hover truncate font-medium\">\n {actor.identifier}\n </Link>\n <Marks marks={actorMarks(actor)} />\n </div>\n <div class=\"hint truncate text-xs\">\n {actor.name ? `${actor.name} · ` : \"\"}{actor.email ?? t(\"actors.no_email\")}<span class=\"md:hidden\">\n {\" · \"}{actor.activated ? day(actor.lastLoginAt, t(\"actors.never\")) : t(\"actors.never\")}</span\n >\n </div>\n </div>\n </div>\n </td>\n\n <td class=\"hidden text-xs whitespace-nowrap opacity-85 md:table-cell\">{presence(actor)}</td>\n\n <td class=\"hidden text-xs whitespace-nowrap opacity-85 md:table-cell\">\n {actor.activated ? day(actor.lastLoginAt, t(\"actors.never\")) : t(\"actors.never\")}\n </td>\n </Row>\n {/each}\n {/snippet}\n </Table>\n\n <Pager {pages} shown={actors.length} busy={loading} onpage={turn} />\n {/if}\n\n <Devices {api} {feedback} />\n</Page>\n","<script>\n import { t } from \"./lib/copy.js\";\n import { moment, since } from \"./lib/format.js\";\n import Link from \"./ui/Link.svelte\";\n\n let { api, feedback, rows, onchange, showActor = false } = $props();\n\n const REVOKE = `\n mutation Revoke($id: ID!) {\n revokeConnection(id: $id) { connection { id revokedAt } }\n }\n `;\n\n const STOP = `\n mutation Stop($id: ID!) {\n revokeDelegation(id: $id) { delegation { id revokedAt } }\n }\n `;\n\n async function stop(connection, delegation) {\n if (!confirm(t(\"connections.stop_confirm\", { client: delegation.client.name, provider: connection.provider.name })))\n return;\n\n const done = await feedback.attempt(\n () => api.query(STOP, { id: delegation.id }),\n t(\"connections.stopped\", { client: delegation.client.name }),\n );\n\n if (done) await onchange();\n }\n\n async function revoke(connection) {\n const held = showActor ? connection.actor.identifier : connection.provider.name;\n\n if (\n !confirm(t(\"connections.disconnect_confirm\", { held }))\n )\n return;\n\n const done = await feedback.attempt(\n () => api.query(REVOKE, { id: connection.id }),\n t(\"connections.disconnected\"),\n );\n\n if (done) await onchange();\n }\n</script>\n\n{#if rows.length === 0}\n <p class=\"text-sm opacity-85\">{t(\"connections.empty\")}</p>\n{:else}\n <ul class=\"slats\">\n {#each rows as connection (connection.id)}\n <li class=\"slat\">\n <div class=\"flex flex-wrap items-baseline justify-between gap-x-3 gap-y-1\">\n <span class=\"flex flex-wrap items-baseline gap-2\">\n {#if showActor}\n <Link to={`/actors/${connection.actor.uuid}`} class=\"link link-hover text-sm font-medium\">\n {connection.actor.identifier}\n </Link>\n {:else}\n <span class=\"text-sm font-medium\">{connection.provider.name}</span>\n {/if}\n\n {#if connection.signedInAt}\n <span class=\"badge badge-success badge-xs\">{t(\"connections.badges.signs_in\")}</span>\n {/if}\n {#if connection.email && !connection.emailVerified}\n <span class=\"badge badge-warning badge-xs\">{t(\"connections.badges.unconfirmed\")}</span>\n {/if}\n {#if connection.delegable}\n <span class=\"badge badge-info badge-xs\">{t(\"connections.badges.delegable\")}</span>\n {/if}\n </span>\n\n <button type=\"button\" class=\"link text-xs text-error\" onclick={() => revoke(connection)}>\n {t(\"connections.disconnect\")}\n </button>\n </div>\n\n <span class=\"truncate text-xs opacity-75\">\n {connection.label ?? connection.email ?? connection.subject}\n </span>\n\n <div class=\"flex flex-wrap gap-x-4 text-xs opacity-80\">\n <span title={moment(connection.connectedAt)}>\n {t(\"connections.connected\", { when: since(connection.connectedAt) })}\n </span>\n {#if connection.signedInAt}\n <span title={moment(connection.signedInAt)}>\n {t(\"connections.signed_in\", { when: since(connection.signedInAt) })}\n </span>\n {/if}\n </div>\n\n {#each connection.delegations ?? [] as delegation (delegation.id)}\n <div class=\"flex flex-wrap items-baseline justify-between gap-x-3 border-l-2 border-base-300 pl-2 text-xs\">\n <span>\n <Link to={`/clients/${delegation.client.clientId}`} class=\"link link-hover\">{delegation.client.name}</Link>\n <span class=\"opacity-80\">\n {delegation.releasedAt\n ? t(\"connections.can_use_last\", { when: since(delegation.releasedAt) })\n : t(\"connections.can_use\")}\n </span>\n </span>\n <button type=\"button\" class=\"link text-error\" onclick={() => stop(connection, delegation)}>{t(\"connections.stop\")}</button>\n </div>\n {/each}\n </li>\n {/each}\n </ul>\n{/if}\n","<script>\n import { t } from \"./lib/copy.js\";\n import { joined, moment, since } from \"./lib/format.js\";\n import Link from \"./ui/Link.svelte\";\n\n let { api, feedback, rows, onchange, showActor = false } = $props();\n\n const REVOKE = `\n mutation Revoke($id: ID!) {\n revokeConsent(id: $id) { consent { id revokedAt } }\n }\n `;\n\n async function revoke(consent) {\n const held = showActor ? consent.actor.identifier : consent.client.name;\n\n if (\n !confirm(t(\"consents.revoke_confirm\", { held }))\n )\n return;\n\n const done = await feedback.attempt(\n () => api.query(REVOKE, { id: consent.id }),\n t(\"consents.revoked\"),\n );\n\n if (done) await onchange();\n }\n</script>\n\n{#if rows.length === 0}\n <p class=\"text-sm opacity-85\">{t(\"consents.empty\")}</p>\n{:else}\n <ul class=\"slats\">\n {#each rows as consent (consent.id)}\n <li class=\"slat\">\n <div class=\"flex flex-wrap items-baseline justify-between gap-x-3 gap-y-1\">\n {#if showActor}\n <Link to={`/actors/${consent.actor.uuid}`} class=\"link link-hover text-sm font-medium\">\n {consent.actor.identifier}\n </Link>\n {:else}\n <Link\n to={`/clients/${consent.client.clientId}`}\n class=\"link link-hover text-sm font-medium\"\n >\n {consent.client.name}\n </Link>\n {/if}\n\n <button type=\"button\" class=\"link text-xs text-error\" onclick={() => revoke(consent)}>\n {t(\"consents.revoke\")}\n </button>\n </div>\n\n <div class=\"flex flex-wrap gap-x-2 font-mono text-xs\">\n {#each consent.scopes as scope (scope)}\n <span class=\"scope\" class:scope-privileged={scope.startsWith(\"masks:\")}>{scope}</span>\n {/each}\n </div>\n\n <div class=\"flex flex-wrap gap-x-4 text-xs opacity-80\">\n {#if consent.audience.length}\n <span class=\"truncate font-mono\" title={joined(consent.audience)}>\n {joined(consent.audience)}\n </span>\n {/if}\n <span title={moment(consent.updatedAt)}>{t(\"consents.last_asked\", { when: since(consent.updatedAt) })}</span>\n {#if consent.expiresAt}\n <span title={moment(consent.expiresAt)}>{t(\"consents.asks_again\", { when: moment(consent.expiresAt) })}</span>\n {/if}\n </div>\n\n {#if consent.authorizationDetails?.length}\n <ul class=\"flex flex-col gap-0.5 text-xs\">\n {#each consent.authorizationDetails as held, index (index)}\n <li class=\"flex flex-wrap gap-x-2\">\n <span class=\"scope\">{held.entry.type}</span>\n <span class=\"truncate font-mono opacity-80\">{JSON.stringify(held.entry)}</span>\n <span class=\"opacity-80\">{t(\"consents.until\", { when: moment(held.expires_at) })}</span>\n </li>\n {/each}\n </ul>\n {/if}\n </li>\n {/each}\n </ul>\n{/if}\n","import { t } from \"./copy.js\";\n\nconst GRAVE = new Set([\n \"job.failed\",\n \"logout.undelivered\",\n \"login.refused\",\n \"login.throttled\",\n \"refresh.reused\",\n \"device.blocked\",\n \"actor.deleted\",\n \"authenticator.disabled\",\n \"connection.refused\",\n \"delegation.refused\",\n]);\n\nconst NOTABLE = new Set([\n \"password.changed\",\n \"password.reset_completed\",\n \"actor.scopes_changed\",\n \"actor.suspended\",\n \"provisioning_token.issued\",\n \"provisioning_token.revoked\",\n \"ldap_credential.issued\",\n \"ldap_credential.revoked\",\n \"client.secret_rotated\",\n \"client.logo_refused\",\n \"client.enrolled\",\n \"client.unenrolled\",\n \"signing_key.rotated\",\n \"signing_key.activated\",\n \"backup_code.spent\",\n \"connection.unlinked\",\n \"consent.revoked\",\n \"delegation.granted\",\n \"delegation.revoked\",\n]);\n\nexport function tone(action) {\n if (GRAVE.has(action)) return \"bad\";\n if (NOTABLE.has(action)) return \"watch\";\n\n return \"plain\";\n}\n\nexport function detailed(details) {\n return Object.entries(details ?? {})\n .filter(\n ([, value]) =>\n value !== null &&\n value !== \"\" &&\n !(Array.isArray(value) && !value.length),\n )\n .map(([key, value]) => [key.replace(/_/g, \" \"), phrase(value)]);\n}\n\nfunction phrase(value) {\n if (Array.isArray(value)) return value.join(\" \");\n if (typeof value === \"boolean\")\n return t(value ? \"event_labels.yes\" : \"event_labels.no\");\n\n return String(value);\n}\n","<script>\n import { t } from \"./lib/copy.js\";\n import { detailed, tone } from \"./lib/events.js\";\n import { moment, since } from \"./lib/format.js\";\n import Link from \"./ui/Link.svelte\";\n\n let { events, showActor = true, empty = t(\"events.empty\"), limit = 5, collapse = false } = $props();\n\n let all = $state(false);\n\n const same = (one, other) =>\n one.action === other.action &&\n one.actor?.uuid === other.actor?.uuid &&\n one.client?.clientId === other.client?.clientId;\n\n const runs = $derived(\n events.reduce((held, event) => {\n const last = held.at(-1);\n\n if (collapse && last && same(last.event, event)) last.count += 1;\n else held.push({ event, count: 1 });\n\n return held;\n }, []),\n );\n\n const shown = $derived(all ? runs : runs.slice(0, limit));\n\n const UUID = /\\b([0-9a-f]{8})-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\\b/gi;\n\n const trail = (event) =>\n [\n ...detailed(event.details).map(([key, value]) => `${key} ${value.replace(UUID, \"$1…\")}`),\n event.ipAddress,\n event.device?.label,\n ].filter(Boolean);\n</script>\n\n{#if events.length === 0}\n <p class=\"text-sm opacity-80\">{empty}</p>\n{:else}\n <ol class=\"slats\">\n {#each shown as { event, count } (event.id)}\n <li class=\"event\">\n <span class=\"event-what\">\n <span\n class=\"event-label\"\n class:text-error={tone(event.action) === \"bad\"}\n class:text-warning={tone(event.action) === \"watch\"}\n title={event.action}\n >{event.label}</span>\n\n {#if count > 1}\n <span class=\"event-count\">{t(\"events.repeated\", { count })}</span>\n {/if}\n\n {#if showActor && event.actor}\n <Link to={`/actors/${event.actor.uuid}`} class=\"link link-hover\">{event.actor.identifier}</Link>\n {/if}\n\n {#if event.by && event.by.uuid !== event.actor?.uuid}\n <span class=\"hint\">\n {t(\"events.by\")}\n <Link to={`/actors/${event.by.uuid}`} class=\"link link-hover\">{event.by.identifier}</Link>\n </span>\n {/if}\n\n {#if event.client}\n <Link to={`/clients/${event.client.clientId}`} class=\"badge badge-ghost badge-xs\">{event.client.name}</Link>\n {/if}\n </span>\n\n <time class=\"event-when\" datetime={event.createdAt} title={moment(event.createdAt)}>\n {since(event.createdAt)}\n </time>\n\n {#if trail(event).length}\n <span class=\"event-trail\" title={JSON.stringify(event.details)}>{trail(event).join(\" · \")}</span>\n {/if}\n </li>\n {/each}\n </ol>\n\n {#if !all && runs.length > limit}\n <button type=\"button\" class=\"btn btn-ghost btn-sm self-start\" onclick={() => (all = true)}>\n {t(\"events.more\", { count: runs.length - limit })}\n </button>\n {/if}\n{/if}\n","<script>\n import { t } from \"./lib/copy.js\";\n import { day, moment, since } from \"./lib/format.js\";\n import Link from \"./ui/Link.svelte\";\n\n let { api, feedback, actor, onchange, columns = false } = $props();\n\n async function act(document, variables, notice, question = null) {\n if (question && !confirm(question)) return;\n\n const done = await feedback.attempt(() => api.query(document, variables), notice);\n\n if (done) await onchange();\n }\n\n const revoke = (session) =>\n act(\n `mutation Revoke($id: ID!) { revokeSession(id: $id) { session { revokedAt } } }`,\n { id: session.id },\n t(\"presence.session_revoked\"),\n t(\"presence.revoke_question\"),\n );\n\n const onDevice = (mutation, device, notice, question = null) =>\n act(\n `mutation Act($id: ID!) { ${mutation}(id: $id) { device { id } } }`,\n { id: device.id },\n notice,\n question,\n );\n\n const signOutDevice = (device) =>\n onDevice(\"signOutDevice\", device, t(\"presence.device_signed_out\", { label: device.label }));\n\n const block = (device) =>\n onDevice(\n \"blockDevice\",\n device,\n t(\"presence.device_blocked\", { label: device.label }),\n t(\"presence.block_question\", { label: device.label }),\n );\n\n const unblock = (device) => onDevice(\"unblockDevice\", device, t(\"presence.device_unblocked\", { label: device.label }));\n\n const signOutEverywhere = () =>\n act(\n `mutation SignOut($uuid: ID!) { signOutActor(uuid: $uuid) { actor { uuid } } }`,\n { uuid: actor.uuid },\n t(\"presence.signed_out_everywhere\"),\n t(\"presence.sign_out_everywhere_question\", { identifier: actor.identifier }),\n );\n const LIMIT = 4;\n\n let allSessions = $state(false);\n let allDevices = $state(false);\n\n const sessions = $derived(allSessions ? actor.sessions : actor.sessions.slice(0, LIMIT));\n const devices = $derived(allDevices ? actor.devices : actor.devices.slice(0, LIMIT));\n</script>\n\n<div class=\"flex flex-col gap-5\">\n <div class=\"grid items-start gap-5 {columns ? 'lg:grid-cols-2' : ''}\">\n <section class=\"flex min-w-0 flex-col gap-2.5\">\n <h3 class=\"legend\">{t(\"presence.sessions\")}</h3>\n\n {#if actor.sessions.length === 0}\n <p class=\"text-sm opacity-75\">{t(\"presence.no_sessions\")}</p>\n {:else}\n <ul class=\"slats\">\n {#each sessions as session (session.id)}\n <li class=\"slat\">\n <div class=\"flex items-baseline justify-between gap-3\">\n <span class=\"font-mono text-sm\">{session.ipAddress ?? \"—\"}</span>\n <button type=\"button\" class=\"link text-xs text-error\" onclick={() => revoke(session)}>\n {t(\"presence.revoke\")}\n </button>\n </div>\n\n <span class=\"truncate text-xs opacity-75\">{session.userAgent ?? \"\"}</span>\n\n <div class=\"flex flex-wrap gap-x-4 text-xs opacity-80\">\n <span title={moment(session.authenticatedAt)}>\n {t(\"presence.signed_in\", { when: since(session.authenticatedAt) })}\n </span>\n <span>{t(\"presence.expires\", { when: day(session.expiresAt) })}</span>\n </div>\n </li>\n {/each}\n </ul>\n\n {#if !allSessions && actor.sessions.length > LIMIT}\n <button type=\"button\" class=\"btn btn-ghost btn-sm self-start\" onclick={() => (allSessions = true)}>\n {t(\"presence.show_more\", { count: actor.sessions.length - LIMIT })}\n </button>\n {/if}\n {/if}\n </section>\n\n <section class=\"flex min-w-0 flex-col gap-2.5\">\n <h3 class=\"legend\">{t(\"presence.devices\")}</h3>\n\n {#if actor.devices.length === 0}\n <p class=\"text-sm opacity-75\">{t(\"presence.no_devices\")}</p>\n {:else}\n <ul class=\"slats\">\n {#each devices as device (device.id)}\n <li class=\"slat\">\n <div class=\"flex flex-wrap items-baseline justify-between gap-x-3 gap-y-1\">\n <span class=\"flex flex-wrap items-baseline gap-2\">\n <Link to={`/actors/devices/${device.id}`} class=\"link link-hover text-sm font-medium\">\n {device.label}\n </Link>\n {#if device.blockedAt}\n <span class=\"badge badge-error badge-xs\">{t(\"presence.blocked\")}</span>\n {:else if !device.known}\n <span class=\"badge badge-warning badge-xs\">{t(\"presence.unrecognised\")}</span>\n {/if}\n </span>\n\n <span class=\"flex items-baseline gap-3\">\n <button\n type=\"button\"\n class=\"link text-xs\"\n onclick={() => signOutDevice(device)}\n >\n {t(\"presence.sign_out\")}\n </button>\n\n {#if device.blockedAt}\n <button type=\"button\" class=\"link text-xs\" onclick={() => unblock(device)}>\n {t(\"presence.unblock\")}\n </button>\n {:else}\n <button\n type=\"button\"\n class=\"link text-xs text-error\"\n onclick={() => block(device)}\n >\n {t(\"presence.block\")}\n </button>\n {/if}\n </span>\n </div>\n\n <span class=\"truncate text-xs opacity-75\">{device.userAgent ?? device.category}</span>\n\n <div class=\"flex flex-wrap gap-x-4 text-xs opacity-80\">\n <span class=\"font-mono\">{device.ipAddress ?? \"—\"}</span>\n <span title={moment(device.lastSeenAt)}>{t(\"presence.last_seen\", { when: since(device.lastSeenAt) })}</span>\n </div>\n </li>\n {/each}\n </ul>\n\n {#if !allDevices && actor.devices.length > LIMIT}\n <button type=\"button\" class=\"btn btn-ghost btn-sm self-start\" onclick={() => (allDevices = true)}>\n {t(\"presence.show_more\", { count: actor.devices.length - LIMIT })}\n </button>\n {/if}\n {/if}\n </section>\n </div>\n\n <button type=\"button\" class=\"btn btn-sm btn-error btn-outline self-start\" onclick={signOutEverywhere}>\n {t(\"presence.sign_out_everywhere\")}\n </button>\n</div>\n","<script>\n import { t } from \"./lib/copy.js\";\n import { joined, moment, since } from \"./lib/format.js\";\n import Link from \"./ui/Link.svelte\";\n\n let { api, feedback, rows, onchange, showActor = false, limit = 5 } = $props();\n\n let all = $state(false);\n\n const shown = $derived(all ? rows : rows.slice(0, limit));\n\n const REVOKE = `\n mutation Revoke($id: ID!, $family: Boolean) {\n revokeToken(id: $id, family: $family) { revoked }\n }\n `;\n\n const KIND = {\n access: \"badge-ghost\",\n refresh: \"badge-info\",\n code: \"badge-warning\",\n };\n\n function kind(name) {\n const key = `tokens.kinds.${name}`;\n const said = t(key);\n\n return said === key ? name : said;\n }\n\n async function revoke(token, family) {\n const held = showActor ? token.actor?.identifier : token.client?.name;\n const question = family\n ? t(\"tokens.revoke_chain_confirm\", { held })\n : t(\"tokens.revoke_confirm\", { kind: kind(token.kind) });\n\n if (!confirm(question)) return;\n\n const data = await feedback.attempt(() =>\n api.query(REVOKE, { id: token.id, family }),\n );\n\n if (!data) return;\n\n const count = data.revokeToken.revoked;\n\n feedback.say(t(\"tokens.revoked\", { count }));\n\n await onchange();\n }\n</script>\n\n{#if rows.length === 0}\n <p class=\"text-sm opacity-85\">{t(\"tokens.empty\")}</p>\n{:else}\n <ul class=\"slats\">\n {#each shown as token (token.id)}\n <li class=\"slat\">\n <div class=\"flex flex-wrap items-baseline justify-between gap-x-3 gap-y-1\">\n <span class=\"flex flex-wrap items-baseline gap-2\">\n <span class=\"badge badge-sm {KIND[token.kind] ?? 'badge-ghost'}\">{kind(token.kind)}</span>\n\n {#if showActor && token.actor}\n <Link to={`/actors/${token.actor.uuid}`} class=\"link link-hover text-sm font-medium\">\n {token.actor.identifier}\n </Link>\n {:else if token.client}\n <Link\n to={`/clients/${token.client.clientId}`}\n class=\"link link-hover text-sm font-medium\"\n >\n {token.client.name}\n </Link>\n {/if}\n\n {#if token.parentId}\n <span class=\"text-xs opacity-75\">{t(\"tokens.rotated\")}</span>\n {/if}\n </span>\n\n <span class=\"flex items-baseline gap-3\">\n <button type=\"button\" class=\"link text-xs text-error\" onclick={() => revoke(token, false)}>\n {t(\"tokens.revoke\")}\n </button>\n {#if token.kind === \"refresh\"}\n <button\n type=\"button\"\n class=\"link text-xs text-error\"\n onclick={() => revoke(token, true)}\n >\n {t(\"tokens.revoke_chain\")}\n </button>\n {/if}\n </span>\n </div>\n\n <div class=\"flex flex-wrap gap-1\">\n {#each token.scopes as scope (scope)}\n <span class=\"scope\" class:scope-privileged={scope.startsWith(\"masks:\")}>{scope}</span>\n {/each}\n </div>\n\n <div class=\"flex flex-wrap gap-x-4 text-xs opacity-80\">\n {#if token.audience.length}\n <span class=\"truncate font-mono\" title={joined(token.audience)}>\n {joined(token.audience)}\n </span>\n {/if}\n {#if token.device}\n <span class=\"truncate\">{token.device.label}</span>\n {/if}\n <span title={moment(token.createdAt)}>{t(\"tokens.issued\", { when: since(token.createdAt) })}</span>\n <span title={moment(token.expiresAt)}>{t(\"tokens.expires\", { when: since(token.expiresAt) })}</span>\n </div>\n </li>\n {/each}\n </ul>\n\n {#if !all && rows.length > limit}\n <button type=\"button\" class=\"btn btn-ghost btn-sm self-start\" onclick={() => (all = true)}>\n {t(\"tokens.more\", { count: rows.length - limit })}\n </button>\n {/if}\n{/if}\n","<script>\n import Link from \"./Link.svelte\";\n\n let { base, part = null, parts, label } = $props();\n</script>\n\n<nav class=\"settings-tabs\" aria-label={label}>\n {#each parts as [key, path, name] (path)}\n <Link\n to={`${base}${path}`}\n class=\"settings-tab {(part ?? null) === key ? 'settings-tab-on' : ''}\"\n aria-current={(part ?? null) === key ? \"page\" : undefined}\n >\n {name}\n </Link>\n {/each}\n</nav>\n","<script>\n import { t } from \"./lib/copy.js\";\n import { createFeedback } from \"./lib/feedback.svelte.js\";\n import { day, since } from \"./lib/format.js\";\n import { useRouter } from \"./lib/router.svelte.js\";\n import Connections from \"./Connections.svelte\";\n import Consents from \"./Consents.svelte\";\n import Events from \"./Events.svelte\";\n import Presence from \"./Presence.svelte\";\n import Tokens from \"./Tokens.svelte\";\n import ScopesEditor from \"./ScopesEditor.svelte\";\n import Section from \"./ui/Section.svelte\";\n import Marks from \"./ui/Marks.svelte\";\n import Parts from \"./ui/Parts.svelte\";\n import { actorMarks } from \"./lib/marks.js\";\n import Field from \"./ui/Field.svelte\";\n import Link from \"./ui/Link.svelte\";\n import Notices from \"./ui/Notices.svelte\";\n import Page from \"./ui/Page.svelte\";\n import Spinner from \"./ui/Spinner.svelte\";\n\n let { api, uuid, part = null } = $props();\n\n const router = useRouter();\n\n const FIELDS = [\n [\"nickname\", t(\"actor.fields.nickname\")],\n [\"name\", t(\"actor.fields.name\")],\n [\"email\", t(\"actor.fields.email\")],\n ];\n\n const MORE = [\n [\"givenName\", t(\"actor.fields.given_name\")],\n [\"familyName\", t(\"actor.fields.family_name\")],\n [\"middleName\", t(\"actor.fields.middle_name\")],\n [\"profileUrl\", t(\"actor.fields.profile_url\")],\n [\"pictureUrl\", t(\"actor.fields.picture_url\")],\n [\"websiteUrl\", t(\"actor.fields.website_url\")],\n [\"gender\", t(\"actor.fields.gender\")],\n [\"birthdate\", t(\"actor.fields.birthdate\")],\n [\"zoneinfo\", t(\"actor.fields.zoneinfo\")],\n [\"locale\", t(\"actor.fields.locale\")],\n ];\n\n const PROFILE = [...FIELDS, ...MORE];\n\n const QUERY = `\n query Actor($uuid: ID!) {\n actor(uuid: $uuid) {\n uuid identifier nickname email emailVerified phone phoneVerified signedUpAt pendingApproval\n recoveryRequestedAt\n groupMemberships { group { key } sourcedBy }\n groupLabels\n suspendedAt externalId\n memberships { externalId organization { key name } }\n scopes otpEnabled emailCodesEnabled textCodesEnabled backupCodesRemaining\n backupCodesGeneratedAt lastLoginAt createdAt activated invitedAt\n passkeys { id label aaguid certification compromise userVerified lastUsedAt }\n name givenName familyName middleName profileUrl pictureUrl websiteUrl\n gender birthdate zoneinfo locale\n photoUploaded avatars { photo identicon initials }\n sessions { id ipAddress userAgent authenticatedAt expiresAt }\n devices { id label category known ipAddress userAgent lastSeenAt blockedAt }\n connections {\n id subject label email emailVerified connectedAt signedInAt delegable\n provider { key name }\n delegations { id releasedAt client { clientId name } }\n }\n consents {\n id scopes audience updatedAt expiresAt authorizationDetails\n client { clientId name }\n }\n tokens {\n id kind scopes audience parentId createdAt expiresAt\n client { clientId name }\n device { id label }\n }\n events(limit: 25) {\n id action label createdAt ipAddress details\n actor { uuid identifier }\n by { uuid identifier }\n client { clientId name }\n device { id label }\n }\n }\n groups { key name source }\n viewer { uuid }\n scopesSupported\n }\n `;\n\n const feedback = createFeedback();\n\n let actor = $state(null);\n let viewer = $state(null);\n let groups = $state([]);\n let supported = $state([]);\n let draft = $state({});\n let loading = $state(true);\n let codes = $state(null);\n let link = $state(null);\n let uploading = $state(false);\n\n const yourself = $derived(Boolean(actor && viewer && actor.uuid === viewer.uuid));\n\n const PARTS = [\n [null, \"\", t(\"actor.parts.profile\")],\n [\"access\", \"/access\", t(\"actor.parts.access\")],\n [\"sign-in\", \"/sign-in\", t(\"actor.parts.sign_in\")],\n [\"activity\", \"/activity\", t(\"actor.parts.activity\")],\n ];\n\n const identity = $derived(\n actor\n ? [\n actor.name,\n actor.email ?? t(\"actors.no_email\"),\n actor.activated\n ? t(\"actor.signed_in_lede\", { when: since(actor.lastLoginAt, t(\"actor.never\")) })\n : t(\"actor.invited_lede\"),\n ]\n .filter(Boolean)\n .join(\" · \")\n : \"\",\n );\n\n const approve = () =>\n act(\n `mutation Approve($uuid: ID!) { approveActor(uuid: $uuid) { actor { uuid } } }`,\n { uuid },\n t(\"actor.approval.approved\"),\n );\n\n const resetFactors = () =>\n confirm(t(\"actor.recovery.question\", { identifier: actor.identifier })) &&\n act(\n `mutation Reset($uuid: ID!) { resetSecondFactors(uuid: $uuid) { actor { uuid } } }`,\n { uuid },\n t(\"actor.recovery.done\"),\n );\n\n const dismiss = () =>\n act(\n `mutation Dismiss($uuid: ID!) { dismissRecovery(uuid: $uuid) { actor { uuid } } }`,\n { uuid },\n t(\"actor.recovery.dismissed\"),\n );\n\n async function load() {\n loading = true;\n\n try {\n const data = await api.query(QUERY, { uuid });\n\n actor = data.actor;\n viewer = data.viewer;\n groups = data.groups;\n supported = data.scopesSupported;\n draft = Object.fromEntries(PROFILE.map(([key]) => [key, data.actor?.[key] ?? \"\"]));\n } catch (thrown) {\n feedback.blame(thrown);\n } finally {\n loading = false;\n }\n }\n\n load();\n\n async function act(document, variables, notice) {\n const data = await feedback.attempt(() => api.query(document, variables), notice);\n\n if (data) await load();\n\n return data;\n }\n\n const membership = (group) => actor.groupMemberships.find((held) => held.group.key === group.key);\n const belongs = (group) => Boolean(membership(group));\n const sourcedBy = (group) => membership(group)?.sourcedBy ?? null;\n\n const toggleGroup = (group) =>\n act(\n belongs(group)\n ? `mutation Leave($key: String!, $uuid: ID!) { removeGroupMember(key: $key, uuid: $uuid) { group { key } } }`\n : `mutation Join($key: String!, $uuid: ID!) { addGroupMember(key: $key, uuid: $uuid) { group { key } } }`,\n { key: group.key, uuid },\n belongs(group)\n ? t(\"actor.left_group\", { group: group.name })\n : t(\"actor.joined_group\", { group: group.name }),\n );\n\n const saveProfile = () =>\n act(\n `mutation Save($uuid: ID!, ${PROFILE.map(([key]) => `$${key}: String`).join(\", \")}) {\n updateActor(uuid: $uuid, ${PROFILE.map(([key]) => `${key}: $${key}`).join(\", \")}) { actor { uuid } }\n }`,\n {\n uuid,\n ...Object.fromEntries(\n Object.entries(draft).map(([key, value]) => [key, value === \"\" ? null : value]),\n ),\n },\n t(\"actor.profile_saved\"),\n );\n\n const saveScopes = (scopes) =>\n act(\n `mutation Scopes($uuid: ID!, $scopes: [String!]!) {\n setActorScopes(uuid: $uuid, scopes: $scopes) { actor { scopes } }\n }`,\n { uuid, scopes },\n t(\"actor.scopes_updated\"),\n );\n\n async function generate() {\n codes = null;\n\n const data = await act(\n `mutation Codes($uuid: ID!) { generateBackupCodes(uuid: $uuid) { codes } }`,\n { uuid },\n t(\"actor.codes_generated\"),\n );\n\n if (data) codes = data.generateBackupCodes.codes;\n }\n\n async function recover(document, confirmation) {\n if (!confirm(confirmation)) return;\n\n link = null;\n\n const data = await act(document, { uuid }, null);\n\n if (!data) return;\n\n const result = Object.values(data)[0];\n\n if (result.delivered) {\n feedback.say(t(\"actor.emailed\"));\n } else {\n feedback.say(t(\"actor.no_mailer\"));\n link = result.url;\n }\n }\n\n const reset = () =>\n recover(\n `mutation Reset($uuid: ID!) { resetPassword(uuid: $uuid) { delivered url } }`,\n t(\"actor.reset_question\"),\n );\n\n const resend = () =>\n recover(\n `mutation Resend($uuid: ID!) { resendInvitation(uuid: $uuid) { delivered url } }`,\n t(\"actor.resend_question\"),\n );\n\n const confirmEmail = () =>\n recover(\n `mutation Verify($uuid: ID!) { verifyEmail(uuid: $uuid) { delivered url } }`,\n t(\"actor.confirm_question\"),\n );\n\n function revokePasskey(passkey) {\n if (!confirm(t(\"actor.remove_passkey_question\", { label: passkey.label }))) return;\n\n act(\n `mutation Revoke($uuid: ID!, $id: ID!) { revokePasskey(uuid: $uuid, id: $id) { actor { uuid } } }`,\n { uuid, id: passkey.id },\n t(\"actor.passkey_removed\"),\n );\n }\n\n async function choose(event) {\n const input = event.currentTarget;\n const file = input.files?.[0];\n\n if (!file) return;\n\n uploading = true;\n\n await act(\n `mutation Upload($uuid: ID!, $photo: Upload!) {\n uploadAvatar(uuid: $uuid, photo: $photo) { actor { uuid } }\n }`,\n { uuid, photo: file },\n t(\"actor.photo_updated\"),\n );\n\n uploading = false;\n input.value = \"\";\n }\n\n function removePhoto() {\n if (!confirm(t(\"actor.remove_photo_question\"))) return;\n\n act(\n `mutation Remove($uuid: ID!) { removeAvatar(uuid: $uuid) { actor { uuid } } }`,\n { uuid },\n t(\"actor.photo_removed\"),\n );\n }\n\n function disable() {\n if (!confirm(t(\"actor.disable_question\"))) return;\n\n act(\n `mutation Disable($uuid: ID!) { disableAuthenticator(uuid: $uuid) { actor { otpEnabled } } }`,\n { uuid },\n t(\"actor.authenticator_removed\"),\n );\n }\n\n const CODE_FACTORS = [\n [\"email\", \"emailCodesEnabled\", t(\"actor.factors.email.name\"), t(\"actor.factors.email.lower\")],\n [\"sms\", \"textCodesEnabled\", t(\"actor.factors.sms.name\"), t(\"actor.factors.sms.lower\")],\n ];\n\n function turnOff(factor, name, lower) {\n if (!confirm(t(\"actor.turn_off_question\", { name: lower }))) return;\n\n act(\n `mutation TurnOff($uuid: ID!, $factor: String!) {\n disableCodeFactor(uuid: $uuid, factor: $factor) { actor { uuid } }\n }`,\n { uuid, factor },\n t(\"actor.turned_off\", { name }),\n );\n }\n\n function suspend() {\n if (!confirm(t(\"actor.suspend_question\", { identifier: actor.identifier }))) return;\n\n act(\n `mutation Suspend($uuid: ID!) { suspendActor(uuid: $uuid) { actor { suspendedAt } } }`,\n { uuid },\n t(\"actor.suspended\"),\n );\n }\n\n function restore() {\n act(\n `mutation Restore($uuid: ID!) { restoreActor(uuid: $uuid) { actor { suspendedAt } } }`,\n { uuid },\n t(\"actor.restored\"),\n );\n }\n\n async function remove() {\n if (!confirm(t(\"actor.delete_question\", { identifier: actor.identifier }))) return;\n\n const data = await feedback.attempt(() =>\n api.query(`mutation Delete($uuid: ID!) { deleteActor(uuid: $uuid) { identifier } }`, { uuid }),\n );\n\n if (data) router.go(\"/actors\");\n }\n</script>\n\n{#if loading && !actor}\n <Spinner />\n{:else if !actor}\n <div class=\"alert alert-error alert-soft text-sm\" role=\"alert\">\n {feedback.state.failure ?? t(\"actor.missing\")}\n </div>\n{:else}\n <Page title={actor.identifier} id={actor.uuid} back={{ to: \"/actors\", label: t(\"actor.back\") }} lede={identity}>\n {#snippet lead()}\n <img\n src={`${actor.avatars.photo ?? actor.avatars.identicon}?size=128`}\n width=\"64\"\n height=\"64\"\n alt=\"\"\n class=\"size-14 shrink-0 rounded-lg object-cover sm:size-16\"\n class:drawn={!actor.avatars.photo}\n />\n {/snippet}\n\n {#snippet after()}\n <Marks marks={actorMarks(actor)} />\n {/snippet}\n\n <Notices feedback={feedback.state} />\n\n {#if link}\n <div class=\"alert alert-info alert-soft flex-col items-start gap-2\" role=\"status\">\n <span class=\"font-medium\">{t(\"actor.link_once\")}</span>\n <code class=\"font-mono text-xs break-all\">{link}</code>\n </div>\n {/if}\n\n {#if codes}\n <div class=\"alert alert-warning alert-soft flex-col items-start gap-2\" role=\"status\">\n <span class=\"font-medium\">{t(\"actor.write_down\")}</span>\n <div class=\"grid grid-cols-2 gap-2 font-mono text-sm md:grid-cols-5\">\n {#each codes as code (code)}<span>{code}</span>{/each}\n </div>\n </div>\n {/if}\n\n {#if actor.pendingApproval}\n <div class=\"callout callout-warn\" role=\"status\">\n <div class=\"callout-words\">\n <strong>{t(\"actor.approval.title\")}</strong>\n <span>{t(\"actor.approval.lede\")}</span>\n </div>\n <div class=\"callout-actions\">\n <button type=\"button\" class=\"btn btn-primary btn-sm\" onclick={approve}>{t(\"actor.approval.approve\")}</button>\n </div>\n </div>\n {/if}\n\n {#if actor.recoveryRequestedAt}\n <div class=\"callout callout-warn\" role=\"status\">\n <div class=\"callout-words\">\n <strong>{t(\"actor.recovery.title\")}</strong>\n <span>{t(\"actor.recovery.lede\", { when: since(actor.recoveryRequestedAt) })}</span>\n <span class=\"hint\">{t(\"actor.recovery.explain\")}</span>\n </div>\n <div class=\"callout-actions\">\n <button type=\"button\" class=\"btn btn-primary btn-sm\" onclick={resetFactors}>{t(\"actor.recovery.reset\")}</button>\n <button type=\"button\" class=\"btn btn-ghost btn-sm\" onclick={dismiss}>{t(\"actor.recovery.dismiss\")}</button>\n </div>\n </div>\n {/if}\n\n {#if actor.suspendedAt}\n <div class=\"callout callout-bad\" role=\"status\">\n <div class=\"callout-words\">\n <strong>{t(\"actor.suspended_on\", { day: day(actor.suspendedAt) })}</strong>\n </div>\n <div class=\"callout-actions\">\n <button type=\"button\" class=\"btn btn-sm\" onclick={restore}>{t(\"actor.restore\")}</button>\n </div>\n </div>\n {/if}\n\n {#if !actor.activated}\n <div class=\"callout callout-info\" role=\"status\">\n <div class=\"callout-words\">\n <strong>{actor.invitedAt ? t(\"actor.invited_on\", { day: day(actor.invitedAt) }) : t(\"actor.invited\")}</strong>\n </div>\n <div class=\"callout-actions\">\n <button type=\"button\" class=\"btn btn-sm\" onclick={resend}>{t(\"actor.resend\")}</button>\n </div>\n </div>\n {/if}\n\n {#if actor.email && !actor.emailVerified}\n <div class=\"callout callout-warn\" role=\"status\">\n <div class=\"callout-words\">\n <strong>{t(\"actor.unconfirmed\", { email: actor.email })}</strong>\n </div>\n <div class=\"callout-actions\">\n <button type=\"button\" class=\"btn btn-sm\" onclick={confirmEmail}>{t(\"actor.send_confirmation\")}</button>\n </div>\n </div>\n {/if}\n\n <Parts base={`/actors/${actor.uuid}`} {part} parts={PARTS} label={t(\"actor.parts.label\")} />\n\n <div class=\"grid gap-4\">\n {#if part === \"access\"}\n <Section row title={t(\"actor.scopes\")} lede={t(\"actor.scopes_lede\")}>\n <ScopesEditor value={actor.scopes} available={supported} onchange={saveScopes} />\n </Section>\n\n <Section row title={t(\"actor.groups\")} lede={t(\"actor.groups_lede\")}>\n {#if groups.length}\n <div class=\"flex flex-col gap-1\">\n {#each groups as group (group.key)}\n <label class=\"flex flex-wrap items-center gap-2 text-sm\">\n <input\n type=\"checkbox\"\n class=\"checkbox checkbox-sm\"\n checked={belongs(group)}\n disabled={Boolean(sourcedBy(group))}\n onchange={() => toggleGroup(group)}\n />\n {group.name} <code class=\"hint font-mono\">{group.key}</code>\n {#if sourcedBy(group)}\n <span class=\"hint\">{t(`group_sources.from.${sourcedBy(group)}`)}</span>\n {:else if belongs(group) && group.source !== \"manual\"}\n <span class=\"hint\">{t(\"group_sources.by_hand\")}</span>\n {/if}\n </label>\n {/each}\n </div>\n {:else}\n <p class=\"text-sm opacity-85\">{t(\"actor.no_groups\")} <Link to=\"/settings\">{t(\"actor.add_group\")}</Link>.</p>\n {/if}\n\n {#if actor.groupLabels.length}\n <p class=\"hint\">{t(\"actor.group_labels\", { labels: actor.groupLabels.join(\", \") })}</p>\n {/if}\n </Section>\n\n {#if actor.externalId || actor.memberships.some((membership) => membership.externalId)}\n <Section row title={t(\"actor.provisioned\")}>\n {#if actor.externalId}\n <p class=\"text-sm\">\n {t(\"actor.provisioned_as\")} <span class=\"font-mono\">{actor.externalId}</span>.\n {t(\"actor.provider_may_change\")}\n </p>\n {/if}\n {#each actor.memberships.filter((membership) => membership.externalId) as membership (membership.organization.key)}\n <p class=\"text-sm\">\n {t(\"actor.directory_provisioned\", { organization: membership.organization.name })}\n <span class=\"font-mono\">{membership.externalId}</span>, {t(\"actor.directory_may_change\")}\n </p>\n {/each}\n </Section>\n {/if}\n\n <Section row title={t(\"actor.consents\")} lede={t(\"actor.consents_lede\")}>\n <Consents {api} {feedback} rows={actor.consents} onchange={load} />\n </Section>\n\n <Section row title={t(\"actor.connections\")} lede={t(\"actor.connections_lede\")}>\n <Connections {api} {feedback} rows={actor.connections} onchange={load} />\n </Section>\n {:else if part === \"sign-in\"}\n <Section row title={t(\"actor.password\")} lede={actor.activated ? t(\"actor.password_lede\") : t(\"actor.password_invited\")}>\n {#if actor.activated}\n <button type=\"button\" class=\"btn btn-sm self-start\" onclick={reset}>{t(\"actor.reset_password\")}</button>\n {:else}\n <button type=\"button\" class=\"btn btn-sm self-start\" onclick={resend}>{t(\"actor.resend\")}</button>\n {/if}\n </Section>\n\n <Section row title={t(\"actor.second_factor\")}>\n {#if actor.otpEnabled}\n <div class=\"sheet flex flex-col gap-1 px-4 py-3\">\n <span class=\"text-sm font-medium\">{t(\"actor.authenticator\")}</span>\n <span class=\"hint\">{t(\"actor.backup_codes\", { count: actor.backupCodesRemaining })}</span>\n <div class=\"flex flex-wrap gap-2 pt-2\">\n <button type=\"button\" class=\"btn btn-sm\" onclick={generate}>{t(\"actor.generate\")}</button>\n <button type=\"button\" class=\"btn btn-sm btn-error btn-outline\" onclick={disable}>\n {t(\"actor.remove_authenticator\")}\n </button>\n </div>\n </div>\n {/if}\n\n {#each CODE_FACTORS.filter(([, field]) => actor[field]) as [factor, , name, lower] (factor)}\n <div class=\"sheet flex flex-wrap items-center justify-between gap-2 px-4 py-3\">\n <span class=\"text-sm font-medium\">{name}</span>\n <button type=\"button\" class=\"btn btn-sm btn-error btn-outline\" onclick={() => turnOff(factor, name, lower)}>\n {t(\"actor.turn_off\", { name: lower })}\n </button>\n </div>\n {/each}\n\n {#if !actor.otpEnabled && !actor.emailCodesEnabled && !actor.textCodesEnabled}\n <p class=\"text-sm opacity-85\">{t(\"actor.password_only\")}</p>\n {/if}\n </Section>\n\n <Section row title={t(\"actor.passkeys\")}>\n {#if actor.passkeys.length === 0}\n <p class=\"text-sm opacity-85\">{t(\"actor.no_passkeys\")}</p>\n {:else}\n <ul class=\"flex flex-col gap-2\">\n {#each actor.passkeys as passkey (passkey.id)}\n <li class=\"sheet flex flex-col gap-1 px-4 py-3\">\n <div class=\"flex items-baseline justify-between gap-3\">\n <span class=\"text-sm font-medium\">{passkey.label}</span>\n <span class=\"flex items-baseline gap-2\">\n {#if passkey.userVerified}\n <span class=\"badge badge-success badge-xs\">{t(\"actor.verifying\")}</span>\n {/if}\n {#if passkey.certification}\n <span class=\"badge badge-ghost badge-xs\">{passkey.certification}</span>\n {/if}\n <button type=\"button\" class=\"link text-xs text-error\" onclick={() => revokePasskey(passkey)}>\n {t(\"actor.remove\")}\n </button>\n </span>\n </div>\n\n {#if passkey.compromise}\n <span class=\"text-xs text-error\">\n {t(\"actor.compromise\", { compromise: passkey.compromise.toLowerCase().replaceAll(\"_\", \" \") })}\n </span>\n {/if}\n\n <div class=\"flex flex-wrap gap-x-4 text-xs opacity-80\">\n <span class=\"font-mono\">{passkey.aaguid ?? t(\"actor.no_aaguid\")}</span>\n <span>{t(\"actor.last_used\", { when: since(passkey.lastUsedAt, t(\"actor.never\")) })}</span>\n </div>\n </li>\n {/each}\n </ul>\n {/if}\n </Section>\n\n <Section row title={t(\"actor.signed_in\")} lede={yourself ? t(\"actor.signed_in_yourself\") : null}>\n <Presence {api} {feedback} {actor} onchange={load} />\n </Section>\n\n <Section row title={t(\"actor.tokens\")} lede={t(\"actor.tokens_lede\")}>\n <Tokens {api} {feedback} rows={actor.tokens} onchange={load} />\n </Section>\n {:else if part === \"activity\"}\n <Section>\n {#snippet actions()}\n <Link to={`/activity?actor=${actor.uuid}`} class=\"btn btn-ghost btn-sm\">{t(\"actor.all_activity\")}</Link>\n {/snippet}\n\n <Events events={actor.events} showActor={false} empty={t(\"actor.no_activity\")} limit={25} collapse />\n </Section>\n {:else}\n <Section row title={t(\"actor.profile\")}>\n <div class=\"grid gap-3\">\n {#each FIELDS as [key, label] (key)}\n <Field {label} bind:value={draft[key]} />\n {/each}\n </div>\n\n <details class=\"more\" open={MORE.some(([key]) => draft[key])}>\n <summary>{t(\"actor.more_fields\")}</summary>\n <div class=\"grid gap-3 pt-3 sm:grid-cols-2\">\n {#each MORE as [key, label] (key)}\n <Field {label} bind:value={draft[key]} />\n {/each}\n </div>\n </details>\n\n <button type=\"button\" class=\"btn btn-primary btn-sm self-start\" onclick={saveProfile}>\n {t(\"actor.save_profile\")}\n </button>\n </Section>\n\n <Section row title={t(\"actor.photo\")} lede={t(\"actor.photo_lede\")}>\n <div class=\"flex flex-wrap gap-5\">\n {#each [\"photo\", \"identicon\", \"initials\"].filter((style) => actor.avatars[style]) as style (style)}\n <div class=\"flex flex-col items-start gap-2\">\n <img\n src={`${actor.avatars[style]}?size=128`}\n width=\"64\"\n height=\"64\"\n alt=\"\"\n class=\"size-16 rounded-lg object-cover\"\n class:drawn={style !== \"photo\"}\n />\n <span class=\"hint\">{t(`actor.styles.${style}`)}</span>\n </div>\n {/each}\n </div>\n\n <div class=\"flex flex-wrap items-center gap-2\">\n <label class=\"btn btn-sm\" class:btn-disabled={uploading}>\n {actor.photoUploaded ? t(\"actor.change_photo\") : t(\"actor.upload_photo\")}\n <input\n type=\"file\"\n class=\"sr-only\"\n accept=\"image/png,image/jpeg,image/gif,image/webp\"\n disabled={uploading}\n onchange={choose}\n />\n </label>\n\n {#if actor.photoUploaded}\n <button type=\"button\" class=\"btn btn-ghost btn-sm\" onclick={removePhoto}>{t(\"actor.remove_photo\")}</button>\n {/if}\n\n {#if uploading}\n <span class=\"hint\">{t(\"actor.uploading\")}</span>\n {/if}\n </div>\n </Section>\n\n <Section row title={t(\"actor.danger\")} lede={yourself ? t(\"actor.yourself\") : t(\"actor.danger_lede\")}>\n {#if !yourself}\n <div class=\"flex flex-wrap gap-2\">\n {#if !actor.suspendedAt}\n <button type=\"button\" class=\"btn btn-sm btn-warning btn-outline\" onclick={suspend}>\n {t(\"actor.suspend\", { identifier: actor.identifier })}\n </button>\n {/if}\n <button type=\"button\" class=\"btn btn-sm btn-error btn-outline\" onclick={remove}>\n {t(\"actor.delete\", { identifier: actor.identifier })}\n </button>\n </div>\n {/if}\n </Section>\n {/if}\n </div>\n </Page>\n{/if}\n","<script>\n import { NONE } from \"../lib/format.js\";\n\n let { rows } = $props();\n</script>\n\n<dl class=\"grid gap-x-4 gap-y-0.5 text-sm sm:grid-cols-3 sm:gap-y-2\">\n {#each rows as { term, value, mono } (term)}\n <dt class=\"opacity-80\">{term}</dt>\n <dd class=\"pb-2 sm:col-span-2 sm:pb-0 {mono ? 'font-mono text-xs break-all' : ''}\">\n {value || NONE}\n </dd>\n {/each}\n</dl>\n","<script>\n import { t } from \"./lib/copy.js\";\n import { createFeedback } from \"./lib/feedback.svelte.js\";\n import { day, moment, since } from \"./lib/format.js\";\n import Events from \"./Events.svelte\";\n import Section from \"./ui/Section.svelte\";\n import Facts from \"./ui/Facts.svelte\";\n import Link from \"./ui/Link.svelte\";\n import Notices from \"./ui/Notices.svelte\";\n import Page from \"./ui/Page.svelte\";\n import Spinner from \"./ui/Spinner.svelte\";\n\n let { api, id } = $props();\n\n const QUERY = `\n query Device($id: ID!) {\n device(id: $id) {\n id label name category known ipAddress userAgent lastSeenAt blockedAt createdAt\n actors { uuid identifier }\n sessions {\n id ipAddress userAgent authenticatedAt expiresAt\n actor { uuid identifier }\n }\n }\n events(device: $id, limit: 25) {\n id action label createdAt ipAddress details\n actor { uuid identifier }\n by { uuid identifier }\n client { clientId name }\n }\n }\n `;\n\n const feedback = createFeedback();\n\n let device = $state(null);\n let events = $state([]);\n let loading = $state(true);\n\n async function load() {\n loading = true;\n\n try {\n const data = await api.query(QUERY, { id });\n\n device = data.device;\n events = data.events;\n } catch (thrown) {\n feedback.blame(thrown);\n } finally {\n loading = false;\n }\n }\n\n load();\n\n async function act(mutation, notice, question = null) {\n if (question && !confirm(question)) return;\n\n const done = await feedback.attempt(\n () => api.query(`mutation Act($id: ID!) { ${mutation}(id: $id) { device { id } } }`, { id }),\n notice,\n );\n\n if (done) await load();\n }\n\n const block = () =>\n act(\n \"blockDevice\",\n t(\"device.blocked\", { label: device.label }),\n t(\"device.block_question\", { label: device.label }),\n );\n\n const unblock = () => act(\"unblockDevice\", t(\"device.unblocked\", { label: device.label }));\n\n const signOut = () =>\n act(\n \"signOutDevice\",\n t(\"device.signed_out\", { label: device.label }),\n t(\"device.sign_out_question\", { label: device.label }),\n );\n\n const facts = $derived(\n device\n ? [\n { term: t(\"device.facts.kind\"), value: device.category },\n { term: t(\"device.facts.ip_address\"), value: device.ipAddress, mono: true },\n { term: t(\"device.facts.user_agent\"), value: device.userAgent, mono: true },\n { term: t(\"device.facts.first_seen\"), value: day(device.createdAt) },\n { term: t(\"device.facts.last_seen\"), value: moment(device.lastSeenAt) },\n ]\n : [],\n );\n</script>\n\n{#if loading && !device}\n <Spinner />\n{:else if !device}\n <div class=\"alert alert-error alert-soft text-sm\" role=\"alert\">\n {feedback.state.failure ?? t(\"device.missing\")}\n </div>\n{:else}\n <Page\n title={device.label}\n id={device.id}\n back={{ to: \"/actors#devices\", label: t(\"device.back\") }}\n lede={device.blockedAt\n ? t(\"device.blocked_lede\", { day: day(device.blockedAt) })\n : t(\"device.seen_lede\", { when: since(device.lastSeenAt) })}\n >\n <Notices feedback={feedback.state} />\n\n <div class=\"grid items-start gap-4 md:grid-cols-2\">\n <Section title={t(\"device.what\")}>\n <Facts rows={facts} />\n\n <div class=\"flex flex-wrap gap-2 pt-1\">\n {#if device.sessions.length}\n <button type=\"button\" class=\"btn btn-sm\" onclick={signOut}>{t(\"device.sign_out_everywhere\")}</button>\n {/if}\n\n {#if device.blockedAt}\n <button type=\"button\" class=\"btn btn-sm\" onclick={unblock}>{t(\"device.unblock\")}</button>\n {:else}\n <button type=\"button\" class=\"btn btn-sm btn-error btn-outline\" onclick={block}>\n {t(\"device.block\")}\n </button>\n {/if}\n </div>\n </Section>\n\n <div class=\"flex flex-col gap-4\">\n <Section title={t(\"device.who\")}>\n {#if device.actors.length === 0}\n <p class=\"text-sm opacity-85\">{t(\"device.nobody\")}</p>\n {:else}\n <ul class=\"slats\">\n {#each device.actors as actor (actor.uuid)}\n <li class=\"slat\">\n <Link to={`/actors/${actor.uuid}`} class=\"link link-hover text-sm font-medium\">\n {actor.identifier}\n </Link>\n </li>\n {/each}\n </ul>\n {/if}\n </Section>\n\n <Section title={t(\"device.live_sessions\")}>\n {#if device.sessions.length === 0}\n <p class=\"text-sm opacity-85\">{t(\"device.no_sessions\")}</p>\n {:else}\n <ul class=\"slats\">\n {#each device.sessions as session (session.id)}\n <li class=\"slat\">\n <div class=\"flex flex-wrap items-baseline justify-between gap-x-3 gap-y-1\">\n <Link\n to={`/actors/${session.actor.uuid}`}\n class=\"link link-hover text-sm font-medium\"\n >\n {session.actor.identifier}\n </Link>\n <span class=\"font-mono text-xs opacity-80\">{session.ipAddress ?? \"—\"}</span>\n </div>\n\n <div class=\"flex flex-wrap gap-x-4 text-xs opacity-80\">\n <span title={moment(session.authenticatedAt)}>\n {t(\"device.signed_in\", { when: since(session.authenticatedAt) })}\n </span>\n <span>{t(\"device.expires\", { when: day(session.expiresAt) })}</span>\n </div>\n </li>\n {/each}\n </ul>\n {/if}\n </Section>\n\n <Section title={t(\"device.activity\")}>\n <Events {events} empty={t(\"device.no_activity\")} />\n </Section>\n </div>\n </div>\n </Page>\n{/if}\n","<script>\n import { initial } from \"../../lib/initial.js\";\n\n let { client, class: sized = \"size-8 rounded\" } = $props();\n</script>\n\n{#if client.logoUrl}\n <img src={client.logoUrl} alt=\"\" class=\"shrink-0 {sized}\" />\n{:else}\n <span class=\"grid shrink-0 place-items-center bg-base-200 font-semibold {sized}\" aria-hidden=\"true\"\n >{initial(client.name)}</span\n >\n{/if}\n","<script>\n let { label = null, value, options, onchange, disabled = false, name = null } = $props();\n</script>\n\n<label class=\"flex min-w-0 flex-col gap-1.5\">\n {#if label}<span class=\"field-label\">{label}</span>{/if}\n\n <select\n class=\"select select-sm w-full\"\n {value}\n {disabled}\n aria-label={label ? null : name}\n onchange={(event) => onchange(event.currentTarget.value)}\n >\n {#each options as [key, text, off = false] (key)}\n <option value={key} disabled={off}>{text}</option>\n {/each}\n </select>\n</label>\n","<script>\n let { checked = $bindable(false), label, onchange = null } = $props();\n</script>\n\n<label class=\"flex cursor-pointer items-center gap-2 text-sm\">\n <input\n type=\"checkbox\"\n class=\"toggle toggle-sm\"\n bind:checked\n onchange={onchange ? (event) => onchange(event.currentTarget.checked) : undefined}\n />\n {label}\n</label>\n","<script>\n import Marks from \"./ui/Marks.svelte\";\n import { createPages } from \"./lib/pages.svelte.js\";\n import Pager from \"./ui/Pager.svelte\";\n import { NONE, day, joined } from \"./lib/format.js\";\n import { createFeedback } from \"./lib/feedback.svelte.js\";\n import ScopesEditor from \"./ScopesEditor.svelte\";\n import Section from \"./ui/Section.svelte\";\n import ClientLogo from \"./ui/ClientLogo.svelte\";\n import Field from \"./ui/Field.svelte\";\n import Link from \"./ui/Link.svelte\";\n import Notices from \"./ui/Notices.svelte\";\n import Page from \"./ui/Page.svelte\";\n import Row from \"./ui/Row.svelte\";\n import Search from \"./ui/Search.svelte\";\n import Select from \"./ui/Select.svelte\";\n import Spinner from \"./ui/Spinner.svelte\";\n import Switch from \"./ui/Switch.svelte\";\n import Table from \"./ui/Table.svelte\";\n import { t } from \"./lib/copy.js\";\n\n let { api } = $props();\n\n const pages = createPages();\n\n const QUERY = `\n query Clients($search: String, $archived: Boolean, $afterId: ID, $limit: Int) {\n clients(search: $search, archived: $archived, afterId: $afterId, limit: $limit) {\n clientId name dynamic approvedAt archivedAt logoUrl(size: 64)\n resources createdAt\n }\n clientCount(search: $search, archived: $archived)\n }\n `;\n\n const CREATE = `\n mutation Create(\n $name: String!, $grantTypes: [String!], $redirectUris: [String!],\n $resources: [String!], $allowedScopes: [String!]\n ) {\n createClient(\n name: $name, grantTypes: $grantTypes, redirectUris: $redirectUris,\n resources: $resources, allowedScopes: $allowedScopes\n ) {\n secret client { clientId name }\n }\n }\n `;\n\n const SAML = `\n mutation Saml(\n $name: String!, $entityId: String!, $acsUrls: [String!]!, $certificate: String, $requestsSigned: Boolean,\n $sloUrl: String\n ) {\n createSamlApplication(\n name: $name, entityId: $entityId, acsUrls: $acsUrls, certificate: $certificate, requestsSigned: $requestsSigned,\n sloUrl: $sloUrl\n ) {\n client { clientId name }\n }\n }\n `;\n\n const KINDS = [\n [\"service\", [\"client_credentials\"]],\n [\"app\", [\"authorization_code\", \"refresh_token\"]],\n [\"saml\", []],\n [\"preset\", []],\n ];\n\n const ADD_APP = `\n mutation AddApp($preset: ID!, $baseUrl: String!, $name: String, $slug: String) {\n addApp(preset: $preset, baseUrl: $baseUrl, name: $name, slug: $slug) {\n client { clientId name } secret guide settings { label value }\n }\n }\n `;\n\n const COLUMNS = [\n t(\"clients.columns.name\"),\n { label: t(\"clients.columns.resources\"), hide: true },\n { label: t(\"clients.columns.registered\"), hide: true },\n ];\n\n const feedback = createFeedback();\n\n let adding = $state(false);\n let busy = $state(false);\n let created = $state(null);\n let supported = $state([]);\n let presets = $state([]);\n let draft = $state(blank());\n\n function blank() {\n return {\n name: \"\",\n kind: \"service\",\n redirects: \"\",\n resources: \"\",\n scopes: [],\n metadata: \"\",\n entityId: \"\",\n certificate: \"\",\n sloUrl: \"\",\n requestsSigned: false,\n preset: \"\",\n baseUrl: \"\",\n slug: \"\",\n };\n }\n\n const chosen = $derived(presets.find((preset) => preset.key === draft.preset));\n\n const lines = (text) =>\n text\n .split(\"\\n\")\n .map((one) => one.trim())\n .filter(Boolean);\n\n async function open() {\n draft = blank();\n created = null;\n adding = true;\n feedback.clear();\n\n if (supported.length) return;\n\n const data = await feedback.attempt(() =>\n api.query(\"query Scopes { scopesSupported appPresets { key name asks guide } }\"),\n );\n\n if (!data) return;\n\n supported = data.scopesSupported;\n presets = data.appPresets;\n }\n\n async function readMetadata() {\n const data = await feedback.attempt(() =>\n api.query(\n `mutation Read($xml: String!) {\n readSamlApplicationMetadata(xml: $xml) { entityId acsUrls certificate requestsSigned sloUrl }\n }`,\n { xml: draft.metadata },\n ),\n );\n\n if (!data) return;\n\n const read = data.readSamlApplicationMetadata;\n\n draft.entityId = read.entityId ?? draft.entityId;\n draft.redirects = read.acsUrls.join(\"\\n\") || draft.redirects;\n draft.certificate = read.certificate ?? draft.certificate;\n draft.sloUrl = read.sloUrl ?? draft.sloUrl;\n draft.requestsSigned = read.requestsSigned;\n }\n\n function request() {\n if (draft.kind === \"preset\") {\n return [\n ADD_APP,\n {\n preset: draft.preset,\n baseUrl: draft.baseUrl.trim(),\n name: draft.name.trim() || null,\n slug: draft.slug.trim() || null,\n },\n \"addApp\",\n ];\n }\n\n if (draft.kind === \"saml\") {\n return [\n SAML,\n {\n name: draft.name.trim(),\n entityId: draft.entityId.trim(),\n acsUrls: lines(draft.redirects),\n certificate: draft.certificate.trim() || null,\n requestsSigned: draft.requestsSigned,\n sloUrl: draft.sloUrl.trim() || null,\n },\n \"createSamlApplication\",\n ];\n }\n\n return [\n CREATE,\n {\n name: draft.name.trim(),\n grantTypes: KINDS.find(([key]) => key === draft.kind)[1],\n redirectUris: draft.kind === \"app\" ? lines(draft.redirects) : [],\n resources: lines(draft.resources),\n allowedScopes: draft.scopes,\n },\n \"createClient\",\n ];\n }\n\n async function send() {\n const [document, variables, key] = request();\n\n busy = true;\n\n const data = await feedback.attempt(() => api.query(document, variables));\n\n busy = false;\n\n if (!data) return;\n\n created = data[key];\n adding = false;\n\n again();\n }\n\n let search = $state(\"\");\n let query = $state(\"\");\n let archived = $state(false);\n let clients = $state([]);\n let loading = $state(true);\n async function load() {\n loading = true;\n\n const data = await feedback.attempt(() =>\n api.query(QUERY, {\n search: query || null,\n archived,\n afterId: pages.cursor,\n limit: pages.size,\n }),\n );\n\n loading = false;\n\n if (!data) return;\n\n clients = data.clients;\n pages.counted(data.clientCount);\n }\n\n function turn(direction) {\n if (direction === \"forward\") pages.forward(clients.at(-1)?.clientId);\n else pages.back();\n\n load();\n }\n\n load();\n\n function again() {\n pages.reset();\n load();\n }\n\n function look() {\n query = search;\n again();\n }\n\n function toggle(held) {\n archived = held;\n again();\n }\n\n\n const nothing = $derived(\n query\n ? t(archived ? \"clients.empty.archived_matches\" : \"clients.empty.matches\", { query })\n : archived\n ? t(\"clients.empty.archived\")\n : t(\"clients.empty.none\"),\n );\n</script>\n\n<Page title={t(\"clients.title\")}>\n {#snippet actions()}\n <Switch bind:checked={archived} label={t(\"clients.archived\")} onchange={toggle} />\n <Search\n bind:value={search}\n label={t(\"clients.search\")}\n placeholder={t(\"clients.search_placeholder\")}\n onsearch={look}\n />\n <button type=\"button\" class=\"btn btn-primary btn-sm\" onclick={open}>{t(\"clients.add\")}</button>\n {/snippet}\n\n <Notices feedback={feedback.state} />\n\n {#if adding}\n <Section title={t(\"clients.add\")}>\n <Field label={t(\"clients.name\")} bind:value={draft.name} placeholder={t(\"clients.name_placeholder\")} />\n\n <div class=\"range\" role=\"group\" aria-label={t(\"clients.kind\")}>\n {#each KINDS as [key] (key)}\n <button type=\"button\" aria-pressed={draft.kind === key} onclick={() => (draft.kind = key)}>\n {t(`clients.kinds.${key}`)}\n </button>\n {/each}\n </div>\n\n {#if draft.kind === \"preset\"}\n <Select\n label={t(\"clients.app\")}\n value={draft.preset}\n options={[[\"\", t(\"clients.choose\")], ...presets.map((preset) => [preset.key, preset.name])]}\n onchange={(key) => {\n draft.preset = key;\n draft.slug = presets.find((preset) => preset.key === key)?.asks?.name ?? \"\";\n }}\n />\n\n <Field label={t(\"clients.address\")} bind:value={draft.baseUrl} placeholder=\"https://grafana.example.com\" />\n\n {#if chosen?.asks?.name}\n <Field label={t(\"clients.slug\")} bind:value={draft.slug} placeholder={chosen.asks.name} />\n {/if}\n {/if}\n\n <p class=\"hint\">\n {draft.kind === \"preset\"\n ? t(\"clients.hints.preset\")\n : draft.kind === \"service\"\n ? t(\"clients.hints.service\")\n : draft.kind === \"saml\"\n ? t(\"clients.hints.saml\")\n : t(\"clients.hints.app\")}\n </p>\n\n {#if draft.kind === \"saml\"}\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"clients.metadata\")}</span>\n <textarea\n class=\"textarea textarea-sm w-full font-mono text-xs\"\n rows=\"3\"\n spellcheck=\"false\"\n placeholder=\"<md:EntityDescriptor …\"\n bind:value={draft.metadata}\n ></textarea>\n </label>\n <button\n type=\"button\"\n class=\"btn btn-sm self-start\"\n disabled={!draft.metadata.trim()}\n onclick={readMetadata}\n >\n {t(\"clients.read\")}\n </button>\n\n <Field label={t(\"clients.entity_id\")} bind:value={draft.entityId} placeholder=\"https://wiki.example.com/saml\" />\n\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"clients.acs\")}</span>\n <textarea\n class=\"textarea textarea-sm w-full font-mono text-xs\"\n rows=\"2\"\n spellcheck=\"false\"\n placeholder=\"https://wiki.example.com/saml/acs\"\n bind:value={draft.redirects}\n ></textarea>\n </label>\n\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"clients.certificate\")}</span>\n <textarea\n class=\"textarea textarea-sm w-full font-mono text-xs\"\n rows=\"2\"\n spellcheck=\"false\"\n bind:value={draft.certificate}\n ></textarea>\n </label>\n\n <Field label={t(\"clients.slo_url\")} bind:value={draft.sloUrl} placeholder=\"https://wiki.example.com/saml/slo\" />\n\n <Switch bind:checked={draft.requestsSigned} label={t(\"clients.requests_signed\")} />\n {/if}\n\n {#if draft.kind === \"app\"}\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"clients.redirect_uris\")}</span>\n <textarea\n class=\"textarea textarea-sm w-full font-mono text-xs\"\n rows=\"2\"\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n placeholder=\"https://app.example.com/callback\"\n bind:value={draft.redirects}\n ></textarea>\n </label>\n {/if}\n\n {#if draft.kind !== \"saml\"}\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"clients.resources\")}</span>\n <textarea\n class=\"textarea textarea-sm w-full font-mono text-xs\"\n rows=\"2\"\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n placeholder=\"https://api.example.com/mcp\"\n bind:value={draft.resources}\n ></textarea>\n </label>\n\n <div class=\"flex flex-col gap-2\">\n <span class=\"legend\">{t(\"clients.scopes\")}</span>\n <ScopesEditor\n value={draft.scopes}\n available={supported}\n onchange={(chosen) => (draft.scopes = chosen)}\n />\n </div>\n {/if}\n\n <div class=\"flex gap-2\">\n <button\n type=\"button\"\n class=\"btn btn-primary btn-sm\"\n disabled={busy ||\n (draft.kind === \"preset\"\n ? !draft.preset || !draft.baseUrl.trim()\n : !draft.name.trim() || (draft.kind === \"saml\" && !draft.entityId.trim()))}\n onclick={send}\n >\n {busy ? t(\"clients.adding\") : t(\"clients.submit\")}\n </button>\n <button type=\"button\" class=\"btn btn-ghost btn-sm\" onclick={() => (adding = false)}>\n {t(\"clients.cancel\")}\n </button>\n </div>\n </Section>\n {/if}\n\n {#if created}\n <Section title={t(\"clients.created.title\", { name: created.client.name })}>\n <p class=\"text-sm opacity-85\">\n {t(created.secret ? \"clients.created.client_id_and_secret\" : \"clients.created.client_id\")}\n </p>\n\n <p class=\"tray px-2 py-1 font-mono text-xs break-all\">{created.client.clientId}</p>\n\n {#if created.secret}\n <p class=\"tray px-2 py-1 font-mono text-xs break-all\">{created.secret}</p>\n {/if}\n\n {#if created.settings}\n <p class=\"text-sm opacity-85\">\n {t(\"clients.created.settings\", { name: created.client.name })}\n {#if created.guide}<a class=\"link\" href={created.guide} target=\"_blank\" rel=\"noreferrer\">{t(\"clients.created.guide\")}</a>.{/if}\n </p>\n\n <dl class=\"grid gap-x-4 gap-y-2 text-sm md:grid-cols-[auto_1fr]\">\n {#each created.settings as setting (setting.label)}\n <dt class=\"font-mono text-xs opacity-80\">{setting.label}</dt>\n <dd class=\"tray m-0 px-2 py-1 font-mono text-xs break-all whitespace-pre-wrap\">{setting.value}</dd>\n {/each}\n </dl>\n {/if}\n\n <Link to={`/clients/${created.client.clientId}`} class=\"btn btn-sm self-start\">{t(\"clients.created.open\")}</Link>\n </Section>\n {/if}\n\n {#if loading && clients.length === 0}\n <Spinner />\n {:else}\n <Table columns={COLUMNS} count={clients.length} empty={nothing}>\n {#snippet rows()}\n {#each clients as client (client.clientId)}\n <Row to={`/clients/${client.clientId}`}>\n <td class=\"w-full max-w-0 md:w-auto md:max-w-none\">\n <div class=\"flex items-center gap-3\">\n <ClientLogo {client} class=\"size-8 shrink-0 rounded text-sm\" />\n <div class=\"min-w-0\">\n <div class=\"flex min-w-0 items-center gap-2\">\n <Link to={`/clients/${client.clientId}`} class=\"link link-hover truncate font-medium\">\n {client.name}\n </Link>\n <Marks\n marks={[\n client.archivedAt && [\"archived\", t(\"clients.marks.archived\"), \"quiet\"],\n client.dynamic && !client.approvedAt && [\"dynamic\", t(\"clients.marks.dynamic\"), \"warn\"],\n client.dynamic && client.approvedAt && [\"dynamic\", t(\"clients.marks.dynamic_approved\"), \"quiet\"],\n ].filter(Boolean)}\n />\n </div>\n <div class=\"hint truncate font-mono text-xs\" title={client.clientId}>{client.clientId}</div>\n </div>\n </div>\n </td>\n <td class=\"hidden md:table-cell\">\n <div class=\"hint max-w-[18rem] truncate font-mono text-xs\" title={joined(client.resources)}>\n {joined(client.resources) || NONE}\n </div>\n </td>\n <td class=\"hidden text-xs whitespace-nowrap opacity-85 md:table-cell\">{day(client.createdAt)}</td>\n </Row>\n {/each}\n {/snippet}\n </Table>\n\n <Pager {pages} shown={clients.length} busy={loading} onpage={turn} />\n {/if}\n</Page>\n","import { t } from \"./copy.js\";\n\nexport const POLICY_FIELDS = `\n key name signup nickname email emailVerified phone phoneVerified\n passwordMinimum refuseCommonPasswords passwordRequired firstFactors secondFactors secondFactorRequired appsRequireSecondFactor sessionLifetime sessionIdleTimeout refuseBreachedPasswords riskStepUpAt riskRefuseAt proofOfWork\n emailDomains providers confirmation hidden signupScopes archivedAt\n`;\n\nconst FACTORS = [\n \"password\",\n \"passkey\",\n \"provider\",\n \"email_code\",\n \"otp\",\n \"backup_codes\",\n];\n\nconst CONFIRMATIONS = [\"none\", \"code\", \"link\", \"approval\"];\n\nconst PRESENCE = [\"off\", \"optional\", \"required\"];\n\nconst known = (list, group, value) =>\n list.includes(value) ? t(`policy_rules.${group}.${value}`) : value;\n\nconst listed = (values, empty) =>\n values?.length\n ? values.map((value) => known(FACTORS, \"factors\", value)).join(\", \")\n : t(`policy_rules.values.${empty}`);\n\nconst yes = (value) =>\n t(value ? \"policy_rules.answers.yes\" : \"policy_rules.answers.no\");\n\nconst value = (name) => t(`policy_rules.values.${name}`);\n\nconst UNITS = [\n [86400, \"day\"],\n [3600, \"hour\"],\n [60, \"minute\"],\n];\n\nexport function duration(seconds) {\n const [size, unit] = UNITS.find(([held]) => seconds % held === 0) ?? [\n 1,\n \"second\",\n ];\n\n return t(`policy_rules.units.${unit}`, { count: seconds / size });\n}\n\nconst term = (name) => t(`policy_rules.terms.${name}`);\n\nfunction describePolicy(policy) {\n return [\n [term(\"signup\"), policy.signup ? value(\"open\") : value(\"invitation_only\")],\n [term(\"email_domains\"), listed(policy.emailDomains, \"any\")],\n [\n term(\"proof_of_work\"),\n policy.proofOfWork\n ? t(\"policy_rules.values.bits\", { bits: policy.proofOfWork })\n : value(\"off\"),\n ],\n [term(\"hidden\"), yes(policy.hidden)],\n [term(\"nickname\"), known(PRESENCE, \"presence\", policy.nickname)],\n [term(\"email\"), known(PRESENCE, \"presence\", policy.email)],\n [term(\"email_verified\"), yes(policy.emailVerified)],\n [term(\"phone\"), known(PRESENCE, \"presence\", policy.phone)],\n [term(\"phone_verified\"), yes(policy.phoneVerified)],\n [term(\"first_factors\"), listed(policy.firstFactors, \"nothing\")],\n [\n term(\"providers\"),\n policy.providers === null\n ? value(\"every_one\")\n : listed(policy.providers, \"none\"),\n ],\n [\n term(\"password\"),\n t(\n policy.refuseCommonPasswords\n ? \"policy_rules.values.not_common\"\n : \"policy_rules.values.password\",\n {\n minimum: policy.passwordMinimum,\n },\n ),\n ],\n [term(\"password_required\"), yes(policy.passwordRequired)],\n [term(\"second_factors\"), listed(policy.secondFactors, \"none\")],\n [term(\"second_factor_required\"), yes(policy.secondFactorRequired)],\n [term(\"apps_require_second_factor\"), yes(policy.appsRequireSecondFactor)],\n [\n term(\"session_lifetime\"),\n policy.sessionLifetime\n ? duration(policy.sessionLifetime)\n : value(\"default_lifetime\"),\n ],\n [term(\"refuse_breached\"), yes(policy.refuseBreachedPasswords)],\n [\n term(\"risk_step_up\"),\n policy.riskStepUpAt\n ? t(\"policy_rules.values.at\", { score: policy.riskStepUpAt })\n : value(\"never\"),\n ],\n [\n term(\"risk_refuse\"),\n policy.riskRefuseAt\n ? t(\"policy_rules.values.at\", { score: policy.riskRefuseAt })\n : value(\"never\"),\n ],\n [\n term(\"idle_timeout\"),\n policy.sessionIdleTimeout\n ? duration(policy.sessionIdleTimeout)\n : value(\"never\"),\n ],\n [\n term(\"confirmation\"),\n known(CONFIRMATIONS, \"confirmations\", policy.confirmation),\n ],\n [term(\"signup_scopes\"), listed(policy.signupScopes, \"none\")],\n ];\n}\n\nexport function policyDifferences(chosen, fallback) {\n const theirs = new Map(describePolicy(fallback));\n\n return describePolicy(chosen)\n .filter(([term, value]) => theirs.get(term) !== value)\n .map(([term, value]) => ({ term, value, instead: theirs.get(term) }));\n}\n","<script>\n import { untrack } from \"svelte\";\n import Section from \"./ui/Section.svelte\";\n import Select from \"./ui/Select.svelte\";\n import { t } from \"./lib/copy.js\";\n\n let { rules = [], onsave } = $props();\n\n const OUTCOMES = [\"one_factor\", \"two_factor\", \"token\", \"open\", \"deny\"].map((key) => [\n key,\n t(`forward_auth_rules.outcomes.${key}`),\n ]);\n\n const LISTS = [\"paths\", \"methods\", \"networks\", \"groups\"];\n\n const drafted = (held) =>\n held.map((rule) => ({\n ...Object.fromEntries(LISTS.map((list) => [list, (rule[list] ?? []).join(list === \"paths\" ? \"\\n\" : \", \")])),\n outcome: rule.outcome,\n }));\n\n let rows = $state(untrack(() => drafted(rules)));\n\n $effect(() => {\n rows = drafted(rules);\n });\n\n const split = (value, list) =>\n value\n .split(list === \"paths\" ? /\\n/ : /[\\s,]+/)\n .map((one) => one.trim())\n .filter(Boolean);\n\n const held = () =>\n rows.map((row) => ({\n ...Object.fromEntries(LISTS.map((list) => [list, split(row[list], list)])),\n outcome: row.outcome,\n }));\n\n function add() {\n rows = [...rows, { paths: \"\", methods: \"\", networks: \"\", groups: \"\", outcome: \"one_factor\" }];\n }\n\n function remove(index) {\n rows = rows.filter((_, at) => at !== index);\n }\n\n function move(index, by) {\n const next = [...rows];\n [next[index], next[index + by]] = [next[index + by], next[index]];\n rows = next;\n }\n</script>\n\n<Section row title={t(\"forward_auth_rules.title\")} lede={t(\"forward_auth_rules.lede\")}>\n {#if rows.length}\n <ol class=\"flex flex-col gap-4\">\n {#each rows as row, index (index)}\n <li class=\"flex flex-col gap-2 rounded-box border border-base-300 p-3\">\n <div class=\"flex flex-wrap items-center justify-between gap-2\">\n <span class=\"field-label\">{t(\"forward_auth_rules.rule\", { number: index + 1 })}</span>\n <div class=\"flex gap-1\">\n <button type=\"button\" class=\"btn btn-ghost btn-xs\" disabled={index === 0} onclick={() => move(index, -1)}>\n {t(\"forward_auth_rules.up\")}\n </button>\n <button\n type=\"button\"\n class=\"btn btn-ghost btn-xs\"\n disabled={index === rows.length - 1}\n onclick={() => move(index, 1)}\n >\n {t(\"forward_auth_rules.down\")}\n </button>\n <button type=\"button\" class=\"btn btn-ghost btn-xs\" onclick={() => remove(index)}>\n {t(\"forward_auth_rules.remove\")}\n </button>\n </div>\n </div>\n\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"forward_auth_rules.paths\")}</span>\n <textarea\n class=\"textarea textarea-sm w-full font-mono text-xs\"\n rows=\"2\"\n spellcheck=\"false\"\n placeholder=\"/admin/**\"\n bind:value={row.paths}\n ></textarea>\n <span class=\"hint\">{t(\"forward_auth_rules.paths_hint\")}</span>\n </label>\n\n <div class=\"grid gap-2 sm:grid-cols-3\">\n {#each [\"methods\", \"networks\", \"groups\"] as list (list)}\n <label class=\"flex min-w-0 flex-col gap-1.5\">\n <span class=\"field-label\">{t(`forward_auth_rules.${list}`)}</span>\n <input\n class=\"input input-sm w-full font-mono text-xs\"\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n bind:value={row[list]}\n />\n <span class=\"hint\">{t(`forward_auth_rules.${list}_hint`)}</span>\n </label>\n {/each}\n </div>\n\n <Select\n label={t(\"forward_auth_rules.outcome\")}\n value={row.outcome}\n options={OUTCOMES}\n onchange={(outcome) => (row.outcome = outcome)}\n />\n </li>\n {/each}\n </ol>\n {:else}\n <p class=\"text-sm opacity-85\">{t(\"forward_auth_rules.empty\")}</p>\n {/if}\n\n <p class=\"hint\">{t(\"forward_auth_rules.trust\")}</p>\n\n <div class=\"flex flex-wrap gap-2\">\n <button type=\"button\" class=\"btn btn-sm\" onclick={add}>{t(\"forward_auth_rules.add\")}</button>\n <button type=\"button\" class=\"btn btn-sm btn-primary\" onclick={() => onsave(held())}>\n {t(\"forward_auth_rules.save\")}\n </button>\n </div>\n</Section>\n","<script>\n import { t } from \"./lib/copy.js\";\n import { createFeedback } from \"./lib/feedback.svelte.js\";\n import { day } from \"./lib/format.js\";\n import Section from \"./ui/Section.svelte\";\n import Link from \"./ui/Link.svelte\";\n import Notices from \"./ui/Notices.svelte\";\n\n let { api, rows, onrevoked } = $props();\n\n const UNENROLL = `\n mutation Unenroll($clientId: ID!) {\n unenrollClient(clientId: $clientId) { client { archivedAt } }\n }\n `;\n\n const feedback = createFeedback();\n\n async function revoke(machine) {\n if (!confirm(t(\"machines.revoke_confirm\", { name: machine.name }))) return;\n\n const done = await feedback.attempt(\n () => api.query(UNENROLL, { clientId: machine.clientId }),\n t(\"machines.revoked\", { name: machine.name }),\n );\n\n if (done) await onrevoked();\n }\n</script>\n\n<Section title={t(\"machines.title\")} lede={t(\"machines.lede\")}>\n <Notices feedback={feedback.state} />\n\n {#if rows.length}\n <ul class=\"compact-list\">\n {#each rows as machine (machine.clientId)}\n <li class=\"flex-wrap\">\n <div class=\"flex min-w-0 flex-col\">\n <span class=\"text-sm\">\n <Link to={`/clients/${machine.clientId}`} class=\"link link-hover\">{machine.name}</Link>\n </span>\n <span class=\"hint truncate text-xs\">\n <span class=\"font-mono\">{machine.clientId}</span>\n · {machine.lastSeenAt ? t(\"machines.last_seen\", { day: day(machine.lastSeenAt) }) : t(\"machines.never\")}\n · {t(\"machines.enrolled\", { day: day(machine.createdAt) })}\n </span>\n </div>\n\n <div class=\"ml-auto\">\n <button type=\"button\" class=\"btn btn-xs btn-error btn-outline\" onclick={() => revoke(machine)}>\n {t(\"machines.revoke\")}\n </button>\n </div>\n </li>\n {/each}\n </ul>\n {:else}\n <p class=\"text-sm opacity-85\">{t(\"machines.empty\")}</p>\n {/if}\n</Section>\n","<script>\n import { t } from \"./lib/copy.js\";\n import { createFeedback } from \"./lib/feedback.svelte.js\";\n import { day } from \"./lib/format.js\";\n import Section from \"./ui/Section.svelte\";\n import Link from \"./ui/Link.svelte\";\n import Notices from \"./ui/Notices.svelte\";\n\n let { api, rows, labels, ondecided } = $props();\n\n const GRANT = `\n mutation GrantAccess($id: ID!, $label: String) {\n grantAccess(id: $id, label: $label) { accessRequest { id label } }\n }\n `;\n\n const DECLINE = `\n mutation DeclineAccess($id: ID!) {\n declineAccess(id: $id) { accessRequest { id } }\n }\n `;\n\n const feedback = createFeedback();\n let chosen = $state({});\n\n async function grant(request) {\n const label = chosen[request.id] ?? labels[0];\n const done = await feedback.attempt(\n () => api.query(GRANT, { id: request.id, label }),\n t(\"access_requests.granted\", { identifier: request.actor.identifier, label }),\n );\n\n if (done) await ondecided();\n }\n\n async function decline(request) {\n const done = await feedback.attempt(\n () => api.query(DECLINE, { id: request.id }),\n t(\"access_requests.declined\", { identifier: request.actor.identifier }),\n );\n\n if (done) await ondecided();\n }\n</script>\n\n<Section row title={t(\"access_requests.title\")} lede={t(\"access_requests.lede\")}>\n <Notices feedback={feedback.state} />\n\n {#if rows.length}\n <ul class=\"compact-list\">\n {#each rows as request (request.id)}\n <li class=\"flex-wrap\">\n <div class=\"flex min-w-0 flex-col\">\n <span class=\"text-sm\">\n <Link to={`/actors/${request.actor.uuid}`} class=\"link link-hover\">{request.actor.identifier}</Link>\n </span>\n <span class=\"hint text-xs\">{t(\"access_requests.asked\", { day: day(request.createdAt) })}</span>\n </div>\n\n <div class=\"ml-auto flex flex-wrap items-center gap-2\">\n {#if labels.length > 1}\n <select\n class=\"select select-xs\"\n aria-label={t(\"access_requests.as\")}\n value={chosen[request.id] ?? labels[0]}\n onchange={(event) => (chosen[request.id] = event.currentTarget.value)}\n >\n {#each labels as label (label)}\n <option value={label}>{label}</option>\n {/each}\n </select>\n {/if}\n\n <button type=\"button\" class=\"btn btn-xs btn-primary\" onclick={() => grant(request)}>\n {t(\"access_requests.grant\")}\n </button>\n <button type=\"button\" class=\"btn btn-xs btn-outline\" onclick={() => decline(request)}>\n {t(\"access_requests.decline\")}\n </button>\n </div>\n </li>\n {/each}\n </ul>\n {:else}\n <p class=\"text-sm opacity-85\">{t(\"access_requests.empty\")}</p>\n {/if}\n</Section>\n","<script>\n import { t } from \"./lib/copy.js\";\n import { createFeedback } from \"./lib/feedback.svelte.js\";\n import { day } from \"./lib/format.js\";\n import Section from \"./ui/Section.svelte\";\n import Link from \"./ui/Link.svelte\";\n import Notices from \"./ui/Notices.svelte\";\n\n let { api, rows, onreleased, showClient = false, row = false } = $props();\n\n const RELEASE = `\n mutation Release($name: String!) {\n releaseNamespace(name: $name) { released }\n }\n `;\n\n const feedback = createFeedback();\n\n async function release(held) {\n if (\n !confirm(t(\"namespaces.release_confirm\", { name: held.name }))\n )\n return;\n\n const done = await feedback.attempt(\n () => api.query(RELEASE, { name: held.name }),\n t(\"namespaces.released\", { name: held.name }),\n );\n\n if (done) await onreleased();\n }\n</script>\n\n<Section {row} title={t(\"namespaces.title\")}>\n <Notices feedback={feedback.state} />\n\n <ul class=\"compact-list\">\n {#each rows as held (held.name)}\n <li class=\"flex-wrap\">\n <div class=\"flex min-w-0 flex-col\">\n <span class=\"text-sm\">\n <code class=\"font-mono\">{held.name}</code>\n {#if showClient}\n <span class=\"hint\">\n ·\n {#if held.client}\n <Link to={`/clients/${held.client.clientId}`} class=\"link link-hover\">{held.client.name}</Link>\n {:else}\n {t(\"namespaces.nothing\")}\n {/if}\n </span>\n {/if}\n </span>\n <span class=\"hint truncate text-xs\"><span class=\"font-mono\" title={held.resource}>{held.resource}</span> · {day(held.claimedAt)}</span>\n </div>\n\n <div class=\"ml-auto\">\n {#if held.releasable}\n <button type=\"button\" class=\"btn btn-xs btn-error btn-outline\" onclick={() => release(held)}>\n {t(\"namespaces.release\")}\n </button>\n {:else}\n <span class=\"hint text-xs\">{t(\"namespaces.archive_to_release\")}</span>\n {/if}\n </div>\n </li>\n {/each}\n </ul>\n</Section>\n","<script>\n import { t } from \"../lib/copy.js\";\n import { untrack } from \"svelte\";\n\n let { label, hint = null, value = [], onsave, save = t(\"ui.save\"), rows = 3 } = $props();\n\n let draft = $state(untrack(() => value.join(\"\\n\")));\n let held = $state(untrack(() => value.join(\"\\n\")));\n\n $effect(() => {\n const fresh = value.join(\"\\n\");\n\n if (fresh === held) return;\n\n held = fresh;\n draft = fresh;\n });\n\n const changed = $derived(draft !== held);\n\n const lines = () =>\n draft\n .split(\"\\n\")\n .map((one) => one.trim())\n .filter(Boolean);\n</script>\n\n<label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{label}</span>\n\n <textarea\n class=\"textarea textarea-sm w-full font-mono text-xs\"\n {rows}\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n bind:value={draft}\n ></textarea>\n\n {#if hint}\n <span class=\"hint\">{hint}</span>\n {/if}\n\n <button\n type=\"button\"\n class=\"btn btn-sm self-start\"\n disabled={!changed}\n onclick={() => onsave(lines())}\n >\n {save}\n </button>\n</label>\n","<script>\n import Parts from \"./ui/Parts.svelte\";\n import { createFeedback } from \"./lib/feedback.svelte.js\";\n import { day, joined } from \"./lib/format.js\";\n import { POLICY_FIELDS, policyDifferences } from \"./lib/policies.js\";\n import Consents from \"./Consents.svelte\";\n import Events from \"./Events.svelte\";\n import ForwardAuthRules from \"./ForwardAuthRules.svelte\";\n import Machines from \"./Machines.svelte\";\n import AccessRequests from \"./AccessRequests.svelte\";\n import Namespaces from \"./Namespaces.svelte\";\n import Tokens from \"./Tokens.svelte\";\n import ScopesEditor from \"./ScopesEditor.svelte\";\n import Section from \"./ui/Section.svelte\";\n import ClientLogo from \"./ui/ClientLogo.svelte\";\n import Facts from \"./ui/Facts.svelte\";\n import Field from \"./ui/Field.svelte\";\n import Switch from \"./ui/Switch.svelte\";\n import Lines from \"./ui/Lines.svelte\";\n import Link from \"./ui/Link.svelte\";\n import Notices from \"./ui/Notices.svelte\";\n import Page from \"./ui/Page.svelte\";\n import Spinner from \"./ui/Spinner.svelte\";\n import { t } from \"./lib/copy.js\";\n\n let { api, clientId, part = null } = $props();\n\n const QUERY = `\n query Client($clientId: ID!) {\n client(clientId: $clientId) {\n clientId name dynamic approvedAt archivedAt secretExpiresAt createdAt\n tokenEndpointAuthMethod applicationType clientUri logoUri tosUri policyUri logoUrl(size: 128)\n subjectType sectorIdentifierUri\n redirectUris postLogoutRedirectUris grantTypes responseTypes resources\n requiredScopes allowedScopes allowedGroups forwardAuthRules\n backchannelLogoutUri backchannelLogoutSessionRequired\n requirePushedAuthorizationRequests requireSignedRequestObject consentRequired appPasswords jwks jwksUri\n authorizationDetailsTypes authorizationDetailsSchemas consentLifetime\n accessTokenLifetime refreshTokenLifetime refreshTokenAbsoluteLifetime\n protocol samlEntityId samlCertificate samlNameIdFormat samlRequestsSigned samlIdpInitiated samlAttributes samlSloUrl\n signInPolicy { ${POLICY_FIELDS} }\n events(limit: 25) {\n id action label createdAt ipAddress details\n actor { uuid identifier }\n by { uuid identifier }\n device { id label }\n }\n approvedBy { identifier }\n enrolledBy { clientId name }\n enrolled { clientId name lastSeenAt createdAt }\n accessRequests { id createdAt actor { uuid identifier } }\n namespaces { name resource claimedAt releasable }\n consents(limit: 25) {\n id scopes audience updatedAt expiresAt authorizationDetails\n actor { uuid identifier }\n }\n tokens(limit: 25) {\n id kind scopes audience parentId createdAt expiresAt\n actor { uuid identifier }\n device { id label }\n }\n }\n scopesSupported\n groups { key name }\n samlMetadataUrl\n signInPolicies { key name }\n defaultSignInPolicy { ${POLICY_FIELDS} }\n }\n `;\n\n const feedback = createFeedback();\n\n let client = $state(null);\n let supported = $state([]);\n let groups = $state([]);\n let roles = $state(\"\");\n let policies = $state([]);\n let fallbackPolicy = $state(null);\n let name = $state(\"\");\n let logoutUri = $state(\"\");\n let jwksUri = $state(\"\");\n let jwks = $state(\"\");\n let declared = $state(\"\");\n let lasts = $state(\"\");\n let accessMinutes = $state(\"\");\n let refreshDays = $state(\"\");\n let chainDays = $state(\"\");\n let method = $state(\"\");\n let sector = $state(\"\");\n let metadataUrl = $state(\"\");\n let certificate = $state(\"\");\n let entityId = $state(\"\");\n let sloUrl = $state(\"\");\n let links = $state({});\n let attributes = $state(\"\");\n let loading = $state(true);\n let secret = $state(null);\n let secretExpired = $derived(Boolean(client?.secretExpiresAt) && new Date(client.secretExpiresAt) < new Date());\n\n const NAME_IDS = [\n [\"urn:oasis:names:tc:SAML:2.0:nameid-format:persistent\", t(\"client.name_ids.persistent\")],\n [\"urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress\", t(\"client.name_ids.email\")],\n ];\n\n const saml = $derived(client?.protocol === \"saml\");\n\n const facts = $derived(\n client\n ? [\n {\n term: t(\"client.facts.origin\"),\n value: client.dynamic ? t(\"client.facts.self_registered\") : t(\"client.facts.approved\"),\n },\n { term: t(\"client.facts.approved_by\"), value: client.approvedBy?.identifier },\n { term: t(\"client.facts.registered\"), value: day(client.createdAt) },\n { term: t(\"client.facts.grants\"), value: joined(client.grantTypes), mono: true },\n { term: t(\"client.facts.response_types\"), value: joined(client.responseTypes), mono: true },\n ]\n : [],\n );\n\n const SUBJECTS = [\n [\"public\", t(\"client.subjects.public\")],\n [\"pairwise\", t(\"client.subjects.pairwise\")],\n ];\n\n const GRANTS = [\n [\"refresh_token\", t(\"client.grants.refresh_token\")],\n [\"urn:ietf:params:oauth:grant-type:device_code\", t(\"client.grants.device_code\")],\n [\"urn:ietf:params:oauth:grant-type:token-exchange\", t(\"client.grants.token_exchange\")],\n ];\n\n const LINKS = [\n [\"logoUri\", \"logo_uri\", \"https://app.example.com/logo.png\"],\n [\"clientUri\", \"client_uri\", \"https://app.example.com\"],\n [\"tosUri\", \"tos_uri\", \"https://app.example.com/terms\"],\n [\"policyUri\", \"policy_uri\", \"https://app.example.com/privacy\"],\n ].map(([key, copy, placeholder]) => [key, t(`client.links.${copy}.label`), placeholder]);\n\n async function saveLinks() {\n const changes = Object.fromEntries(LINKS.map(([key]) => [key, links[key].trim() || null]));\n const logoChanged = changes.logoUri && changes.logoUri !== client.logoUri;\n\n await update(changes, t(\"client.notices.saved\"));\n\n if (logoChanged) setTimeout(load, 3000);\n }\n\n function saveLifetimes() {\n return update(\n {\n accessTokenLifetime: accessMinutes ? Number(accessMinutes) * 60 : 0,\n refreshTokenLifetime: refreshDays ? Number(refreshDays) * 86400 : 0,\n refreshTokenAbsoluteLifetime: chainDays ? Number(chainDays) * 86400 : 0,\n consentLifetime: lasts ? Number(lasts) * 86400 : 0,\n },\n t(\"client.notices.saved\"),\n );\n }\n\n const SAML_DEFAULTS = \"email = email\\nname = name\\ngiven_name = given_name\\nfamily_name = family_name\\npreferred_username = preferred_username\";\n\n const differences = $derived(\n client?.signInPolicy && fallbackPolicy ? policyDifferences(client.signInPolicy, fallbackPolicy) : [],\n );\n\n const keyed = $derived(Boolean(client?.jwks || client?.jwksUri));\n\n const mapped = (held) =>\n Object.entries(held ?? {})\n .map(([attribute, claim]) => `${attribute} = ${claim}`)\n .join(\"\\n\");\n\n async function load() {\n loading = true;\n\n try {\n const data = await api.query(QUERY, { clientId });\n\n client = data.client;\n supported = data.scopesSupported;\n groups = data.groups;\n roles = (data.client?.allowedGroups ?? []).filter((held) => held.includes(\":\")).join(\", \");\n policies = data.signInPolicies;\n fallbackPolicy = data.defaultSignInPolicy;\n name = data.client?.name ?? \"\";\n logoutUri = data.client?.backchannelLogoutUri ?? \"\";\n jwksUri = data.client?.jwksUri ?? \"\";\n jwks = data.client?.jwks ? JSON.stringify(data.client.jwks, null, 2) : \"\";\n lasts = data.client?.consentLifetime ? String(Math.round(data.client.consentLifetime / 86400)) : \"\";\n accessMinutes = data.client?.accessTokenLifetime ? String(Math.round(data.client.accessTokenLifetime / 60)) : \"\";\n refreshDays = data.client?.refreshTokenLifetime ? String(Math.round(data.client.refreshTokenLifetime / 86400)) : \"\";\n chainDays = data.client?.refreshTokenAbsoluteLifetime\n ? String(Math.round(data.client.refreshTokenAbsoluteLifetime / 86400))\n : \"\";\n declared = Object.keys(data.client?.authorizationDetailsSchemas ?? {}).length\n ? JSON.stringify(data.client.authorizationDetailsSchemas, null, 2)\n : \"\";\n method = data.client?.tokenEndpointAuthMethod ?? \"\";\n sector = data.client?.sectorIdentifierUri ?? \"\";\n metadataUrl = data.samlMetadataUrl;\n certificate = data.client?.samlCertificate ?? \"\";\n entityId = data.client?.samlEntityId ?? \"\";\n sloUrl = data.client?.samlSloUrl ?? \"\";\n links = Object.fromEntries(LINKS.map(([key]) => [key, data.client?.[key] ?? \"\"]));\n attributes = mapped(data.client?.samlAttributes);\n } catch (thrown) {\n feedback.blame(thrown);\n } finally {\n loading = false;\n }\n }\n\n load();\n\n async function act(document, variables, notice) {\n const data = await feedback.attempt(() => api.query(document, variables), notice);\n\n if (data) await load();\n\n return data;\n }\n\n const update = (changes, notice) =>\n act(\n `mutation Update(\n $clientId: ID!, $name: String, $requiredScopes: [String!], $allowedScopes: [String!],\n $backchannelLogoutUri: String, $redirectUris: [String!],\n $postLogoutRedirectUris: [String!], $resources: [String!],\n $requirePushedAuthorizationRequests: Boolean, $consentRequired: Boolean,\n $signInPolicy: ID, $grantTypes: [String!], $jwksUri: String,\n $tokenEndpointAuthMethod: String, $requireSignedRequestObject: Boolean,\n $samlCertificate: String, $samlRequestsSigned: Boolean, $samlIdpInitiated: Boolean,\n $samlNameIdFormat: String, $samlEntityId: String, $samlAttributes: JSON, $samlSloUrl: String, $jwks: JSON,\n $subjectType: String, $sectorIdentifierUri: String, $dpopBoundAccessTokens: Boolean,\n $backchannelLogoutSessionRequired: Boolean, $clientUri: String, $logoUri: String,\n $tosUri: String, $policyUri: String, $authorizationDetailsTypes: [String!],\n $authorizationDetailsSchemas: JSON, $consentLifetime: Int, $allowedGroups: [String!],\n $accessTokenLifetime: Int, $refreshTokenLifetime: Int, $refreshTokenAbsoluteLifetime: Int,\n $forwardAuthRules: JSON\n ) {\n updateClient(\n clientId: $clientId, name: $name, requiredScopes: $requiredScopes,\n allowedScopes: $allowedScopes, backchannelLogoutUri: $backchannelLogoutUri,\n redirectUris: $redirectUris, postLogoutRedirectUris: $postLogoutRedirectUris,\n resources: $resources,\n requirePushedAuthorizationRequests: $requirePushedAuthorizationRequests,\n consentRequired: $consentRequired,\n signInPolicy: $signInPolicy,\n grantTypes: $grantTypes,\n jwksUri: $jwksUri,\n tokenEndpointAuthMethod: $tokenEndpointAuthMethod,\n requireSignedRequestObject: $requireSignedRequestObject,\n samlCertificate: $samlCertificate,\n samlRequestsSigned: $samlRequestsSigned,\n samlIdpInitiated: $samlIdpInitiated,\n samlNameIdFormat: $samlNameIdFormat,\n samlEntityId: $samlEntityId,\n samlAttributes: $samlAttributes,\n samlSloUrl: $samlSloUrl,\n jwks: $jwks,\n subjectType: $subjectType,\n sectorIdentifierUri: $sectorIdentifierUri,\n dpopBoundAccessTokens: $dpopBoundAccessTokens,\n backchannelLogoutSessionRequired: $backchannelLogoutSessionRequired,\n clientUri: $clientUri,\n logoUri: $logoUri,\n tosUri: $tosUri,\n policyUri: $policyUri,\n authorizationDetailsTypes: $authorizationDetailsTypes,\n authorizationDetailsSchemas: $authorizationDetailsSchemas,\n consentLifetime: $consentLifetime\n accessTokenLifetime: $accessTokenLifetime\n refreshTokenLifetime: $refreshTokenLifetime\n refreshTokenAbsoluteLifetime: $refreshTokenAbsoluteLifetime\n allowedGroups: $allowedGroups\n forwardAuthRules: $forwardAuthRules\n ) {\n client { clientId }\n }\n }`,\n { clientId, ...changes },\n notice,\n );\n\n const roleList = (value) =>\n value\n .split(/[\\s,]+/)\n .map((held) => held.trim())\n .filter((held) => held.includes(\":\"));\n\n function admit(key, on) {\n const held = client.allowedGroups.filter((group) => group !== key);\n\n update({ allowedGroups: on ? [...held, key] : held }, t(\"client.notices.groups\"));\n }\n\n function saveRoles() {\n const kept = client.allowedGroups.filter((group) => !group.includes(\":\"));\n\n update({ allowedGroups: [...kept, ...roleList(roles)] }, t(\"client.notices.groups\"));\n }\n\n const unattended = $derived(client?.grantTypes.includes(\"client_credentials\") ?? false);\n\n const granting = (grant, on) =>\n on ? [...new Set([...client.grantTypes, grant])] : client.grantTypes.filter((held) => held !== grant);\n\n function signsInAsItself(on) {\n update(\n { grantTypes: granting(\"client_credentials\", on) },\n on\n ? t(\"client.notices.unattended_on\")\n : t(\"client.notices.unattended_off\"),\n );\n }\n\n function knowsActorsAs(chosen) {\n const question = t(\"client.confirm.subject\");\n\n if (chosen === client.subjectType || !confirm(question)) {\n load();\n return;\n }\n\n update({ subjectType: chosen }, t(\"client.notices.subject\"));\n }\n\n function saveKeys(held) {\n const pending = method === \"private_key_jwt\" && client.tokenEndpointAuthMethod !== \"private_key_jwt\";\n const changes = pending ? { ...held, tokenEndpointAuthMethod: method } : held;\n\n update(changes, pending ? t(\"client.notices.keys_signing\") : t(\"client.notices.keys\"));\n }\n\n function saveKeySet() {\n const text = jwks.trim();\n\n if (!text) {\n saveKeys({ jwks: null });\n return;\n }\n\n try {\n saveKeys({ jwks: JSON.parse(text), jwksUri: null });\n } catch {\n feedback.blame(new Error(t(\"client.errors.jwks\")));\n }\n }\n\n function saveDeclared() {\n const text = declared.trim();\n\n try {\n update({ authorizationDetailsSchemas: text ? JSON.parse(text) : {} }, t(\"client.notices.declared\"));\n } catch {\n feedback.blame(new Error(t(\"client.errors.declared\")));\n }\n }\n\n function saveAttributes() {\n const pairs = attributes\n .split(\"\\n\")\n .map((line) => line.trim())\n .filter(Boolean)\n .map((line) => line.split(\"=\").map((part) => part.trim()));\n\n if (pairs.some((pair) => pair.length !== 2 || !pair[0] || !pair[1])) {\n feedback.blame(new Error(t(\"client.errors.attributes\")));\n return;\n }\n\n update(\n { samlAttributes: Object.fromEntries(pairs) },\n pairs.length ? t(\"client.notices.attributes\") : t(\"client.notices.attributes_default\"),\n );\n }\n\n const METHODS = [\n [\"client_secret_basic\", t(\"client.methods.client_secret_basic\")],\n [\"client_secret_post\", t(\"client.methods.client_secret_post\")],\n [\"private_key_jwt\", t(\"client.methods.private_key_jwt\")],\n ];\n\n function authenticates(chosen) {\n method = chosen;\n\n if (chosen === \"private_key_jwt\" && !keyed) return;\n\n const notice =\n chosen === \"private_key_jwt\"\n ? t(\"client.notices.signs_assertions\")\n : client.tokenEndpointAuthMethod === \"private_key_jwt\"\n ? t(\"client.notices.uses_secret\")\n : t(\"client.notices.saved\");\n\n update({ tokenEndpointAuthMethod: chosen }, notice);\n }\n\n function restore() {\n if (!confirm(t(\"client.confirm.restore\"))) return;\n\n act(\n `mutation Restore($clientId: ID!) {\n restoreClient(clientId: $clientId) { client { archivedAt } }\n }`,\n { clientId },\n t(\"client.notices.restored\"),\n );\n }\n\n async function rotate() {\n if (!confirm(t(\"client.confirm.rotate\"))) return;\n\n const data = await act(\n `mutation Rotate($clientId: ID!) { rotateClientSecret(clientId: $clientId) { secret } }`,\n { clientId },\n t(\"client.notices.rotated\"),\n );\n\n if (data) secret = data.rotateClientSecret.secret;\n }\n\n function archive() {\n if (!confirm(t(\"client.confirm.archive\"))) return;\n\n act(\n `mutation Archive($clientId: ID!) { archiveClient(clientId: $clientId) { client { archivedAt } } }`,\n { clientId },\n t(\"client.notices.archived\"),\n );\n }\n</script>\n\n{#if loading && !client}\n <Spinner />\n{:else if !client}\n <div class=\"alert alert-error alert-soft text-sm\" role=\"alert\">\n {feedback.state.failure ?? t(\"client.missing\")}\n </div>\n{:else}\n <Page title={client.name} id={client.clientId} back={{ to: \"/clients\", label: t(\"client.back\") }}>\n <Notices feedback={feedback.state} />\n\n {#if client.enrolledBy}\n <p class=\"hint text-sm\">\n {t(\"machines.enrolled_by\")}\n <Link to={`/clients/${client.enrolledBy.clientId}`} class=\"link link-hover\">{client.enrolledBy.name}</Link>\n </p>\n {/if}\n\n {#if client.archivedAt}\n <div class=\"alert alert-warning alert-soft flex-wrap items-center gap-3 text-sm\" role=\"status\">\n <span>{t(\"client.archived_on\", { day: day(client.archivedAt) })}</span>\n <button type=\"button\" class=\"btn btn-sm\" onclick={restore}>{t(\"client.restore\")}</button>\n </div>\n {/if}\n\n {#if secret}\n <div class=\"alert alert-warning alert-soft flex-col items-start gap-2\" role=\"status\">\n <span class=\"font-medium\">{t(\"client.secret_once\")}</span>\n <code class=\"font-mono text-sm break-all\">{secret}</code>\n </div>\n {/if}\n\n <Parts\n base={`/clients/${clientId}`}\n {part}\n label={t(\"client.parts.label\")}\n parts={[\n [null, \"\", t(\"client.parts.general\")],\n [\"access\", \"/access\", t(\"client.parts.access\")],\n [\"endpoints\", \"/endpoints\", t(\"client.parts.endpoints\")],\n [\"usage\", \"/usage\", t(\"client.parts.usage\")],\n ]}\n />\n\n <div class=\"grid gap-4\">\n {#if part === \"access\"}\n <Section\n row\n title={t(\"client.groups.title\")}\n lede={t(\"client.groups.lede\")}\n >\n {#if groups.length}\n <div class=\"flex flex-col gap-1\">\n {#each groups as group (group.key)}\n <label class=\"flex items-center gap-2 text-sm\">\n <input\n type=\"checkbox\"\n class=\"checkbox checkbox-sm\"\n checked={client.allowedGroups.includes(group.key)}\n onchange={(event) => admit(group.key, event.currentTarget.checked)}\n />\n {group.name} <code class=\"hint font-mono\">{group.key}</code>\n </label>\n {/each}\n </div>\n {:else}\n <p class=\"text-sm opacity-85\">\n {t(\"client.groups.none\")} <Link to=\"/settings\">{t(\"client.groups.add\")}</Link> {t(\"client.groups.limit\")}\n </p>\n {/if}\n\n <Field\n label={t(\"client.groups.roles\")}\n bind:value={roles}\n placeholder=\"acme:owner, acme:billing\"\n onsave={saveRoles}\n />\n\n <p class=\"hint\">\n {client.allowedGroups.length\n ? t(\"client.groups.only\", { groups: client.allowedGroups.join(\", \") })\n : t(\"client.groups.everyone\")}\n </p>\n </Section>\n\n {#if client.allowedGroups.length}\n <AccessRequests {api} rows={client.accessRequests} labels={client.allowedGroups} ondecided={load} />\n {/if}\n\n {#if client.protocol === \"forward\"}\n <ForwardAuthRules\n rules={client.forwardAuthRules}\n onsave={(forwardAuthRules) => update({ forwardAuthRules }, t(\"forward_auth_rules.saved\"))}\n />\n {/if}\n\n <Section row title={t(\"client.scopes.title\")}>\n <div class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"client.scopes.always\")}</span>\n <ScopesEditor\n value={client.requiredScopes}\n available={supported}\n onchange={(requiredScopes) => update({ requiredScopes }, t(\"client.notices.scopes\"))}\n />\n </div>\n\n <div class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"client.scopes.on_request\")}</span>\n <ScopesEditor\n value={client.allowedScopes}\n available={supported}\n onchange={(allowedScopes) => update({ allowedScopes }, t(\"client.notices.scopes\"))}\n />\n </div>\n </Section>\n {:else if part === \"endpoints\"}\n <Section row title={t(\"client.uris.title\")}>\n <Lines\n label={saml ? t(\"client.uris.acs\") : t(\"client.uris.redirect\")}\n value={client.redirectUris}\n onsave={(redirectUris) => update({ redirectUris }, t(\"client.notices.redirects\"))}\n />\n\n <Lines\n label={t(\"client.uris.post_logout\")}\n value={client.postLogoutRedirectUris}\n onsave={(postLogoutRedirectUris) =>\n update({ postLogoutRedirectUris }, t(\"client.notices.post_logout\"))}\n />\n\n <Lines\n label={t(\"client.uris.resources\")}\n value={client.resources}\n onsave={(resources) => update({ resources }, t(\"client.notices.resources\"))}\n />\n </Section>\n\n {#if !saml}\n <Section row title={t(\"client.keys.title\")}>\n <p class=\"hint\">\n {t(\"client.keys.hint\")}\n </p>\n\n <Field\n label={t(\"client.keys.jwks_uri\")}\n bind:value={jwksUri}\n placeholder=\"https://app.example.com/.well-known/jwks.json\"\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n onsave={() => saveKeys(jwksUri.trim() ? { jwksUri: jwksUri.trim(), jwks: null } : { jwksUri: null })}\n />\n\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"client.keys.jwks\")}</span>\n <textarea\n class=\"textarea textarea-sm w-full font-mono text-xs\"\n rows=\"4\"\n spellcheck=\"false\"\n placeholder={'{ \"keys\": [ ... ] }'}\n bind:value={jwks}\n ></textarea>\n <button type=\"button\" class=\"btn btn-sm self-start\" onclick={saveKeySet}>{t(\"client.save\")}</button>\n </label>\n\n {#if keyed}\n <Switch\n checked={client.requireSignedRequestObject}\n label={t(\"client.keys.jar\")}\n onchange={(on) =>\n update(\n { requireSignedRequestObject: on },\n on\n ? t(\"client.notices.jar_on\")\n : t(\"client.notices.jar_off\"),\n )}\n />\n {/if}\n </Section>\n {/if}\n\n {#if !saml}\n <Section row title={t(\"client.details.title\")}>\n <p class=\"hint\">\n {t(\"client.details.hint\")}\n </p>\n\n <Lines\n label={t(\"client.details.types\")}\n value={client.authorizationDetailsTypes}\n onsave={(authorizationDetailsTypes) => update({ authorizationDetailsTypes }, t(\"client.notices.types\"))}\n />\n\n {#if client.approvedAt}\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"client.details.accepts\")}</span>\n <textarea\n class=\"textarea textarea-sm w-full font-mono text-xs\"\n rows=\"6\"\n spellcheck=\"false\"\n placeholder={'{ \"payment_initiation\": { \"label\": \"Send a payment\", \"schema\": { \"type\": \"object\" } } }'}\n bind:value={declared}\n ></textarea>\n <button type=\"button\" class=\"btn btn-sm self-start\" onclick={saveDeclared}>{t(\"client.save\")}</button>\n </label>\n {/if}\n </Section>\n {/if}\n {:else if part === \"usage\"}\n <Section title={t(\"client.consents\")}>\n <Consents {api} {feedback} rows={client.consents} onchange={load} showActor />\n </Section>\n\n <Section title={t(\"client.tokens\")}>\n <Tokens {api} {feedback} rows={client.tokens} onchange={load} showActor />\n </Section>\n\n <Section title={t(\"client.activity.title\")}>\n {#snippet actions()}\n <Link to={`/activity?client=${client.clientId}`} class=\"btn btn-ghost btn-sm\">{t(\"client.activity.all\")}</Link>\n {/snippet}\n\n <Events events={client.events} empty={t(\"client.activity.empty\")} />\n </Section>\n\n {#if client.namespaces.length}\n <Namespaces {api} rows={client.namespaces} onreleased={load} />\n {/if}\n\n {#if client.namespaces.length || client.enrolled.length}\n <Machines {api} rows={client.enrolled} onrevoked={load} />\n {/if}\n {:else}\n <Section row title={t(\"client.registration.title\")}>\n <Field label={t(\"client.registration.name\")} bind:value={name} onsave={() => update({ name }, t(\"client.notices.renamed\"))} />\n\n <Facts rows={facts} />\n\n {#if saml}\n <p class=\"hint\">{t(\"client.registration.saml\")}</p>\n {:else if client.tokenEndpointAuthMethod === \"none\"}\n <p class=\"hint\">{t(\"client.registration.public\")}</p>\n {:else}\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"client.registration.authenticates\")}</span>\n <select\n class=\"select select-sm w-full\"\n value={method}\n onchange={(event) => authenticates(event.currentTarget.value)}\n >\n {#each METHODS as [key, label] (key)}\n <option value={key}>{label}</option>\n {/each}\n </select>\n </label>\n {/if}\n\n {#if method === \"private_key_jwt\" && !keyed}\n <p class=\"text-xs text-warning\">{t(\"client.registration.needs_keys\")}</p>\n {/if}\n\n {#if !saml}\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"client.registration.knows_as\")}</span>\n <select\n class=\"select select-sm w-full\"\n value={client.subjectType}\n onchange={(event) => knowsActorsAs(event.currentTarget.value)}\n >\n {#each SUBJECTS as [key, label] (key)}\n <option value={key}>{label}</option>\n {/each}\n </select>\n </label>\n\n {#if client.subjectType === \"pairwise\" || client.sectorIdentifierUri}\n <Field\n label={t(\"client.registration.sector\")}\n bind:value={sector}\n placeholder={t(\"client.registration.sector_placeholder\")}\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n onsave={() =>\n update(\n { sectorIdentifierUri: sector.trim() || null },\n sector.trim() ? t(\"client.notices.saved\") : t(\"client.notices.cleared\"),\n )}\n />\n {/if}\n\n {#each GRANTS as [grant, label] (grant)}\n <Switch\n checked={client.grantTypes.includes(grant)}\n {label}\n onchange={(on) => update({ grantTypes: granting(grant, on) }, t(\"client.notices.grants\"))}\n />\n {/each}\n {/if}\n\n {#if client.approvedAt && client.tokenEndpointAuthMethod !== \"none\"}\n <Switch\n checked={unattended}\n label={t(\"client.registration.unattended\")}\n onchange={signsInAsItself}\n />\n {/if}\n\n <div class=\"flex flex-wrap gap-2 pt-1\">\n {#if client.tokenEndpointAuthMethod.startsWith(\"client_secret\")}\n <button type=\"button\" class=\"btn btn-sm\" onclick={rotate}>{t(\"client.registration.rotate\")}</button>\n {#if client.secretExpiresAt}\n <span class=\"self-center text-sm {secretExpired ? 'text-error' : 'opacity-70'}\" role=\"status\">\n {t(secretExpired ? \"client.registration.secret_expired\" : \"client.registration.secret_expires\", {\n day: day(client.secretExpiresAt),\n })}\n </span>\n {/if}\n {/if}\n {#if !client.archivedAt}\n <button type=\"button\" class=\"btn btn-sm btn-error btn-outline\" onclick={archive}>\n {t(\"client.registration.archive\")}\n </button>\n {/if}\n </div>\n </Section>\n\n {#if saml}\n <Section row title={t(\"client.saml.title\")}>\n <Field\n label={t(\"client.saml.entity_id\")}\n bind:value={entityId}\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n onsave={() => update({ samlEntityId: entityId.trim() }, t(\"client.notices.entity_id\"))}\n />\n\n <div class=\"flex flex-col gap-1.5\">\n <Field\n label={t(\"client.saml.slo_url\")}\n bind:value={sloUrl}\n placeholder=\"https://wiki.example.com/saml/slo\"\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n onsave={() =>\n update(\n { samlSloUrl: sloUrl.trim() || null },\n sloUrl.trim() ? t(\"client.notices.saved\") : t(\"client.notices.cleared\"),\n )}\n />\n <span class=\"hint\">{t(\"client.saml.slo_url_hint\")}</span>\n </div>\n\n <Facts\n rows={[\n { term: t(\"client.saml.metadata\"), value: metadataUrl, mono: true },\n { term: t(\"client.saml.initiate\"), value: client.samlIdpInitiated ? `/saml/initiate/${client.clientId}` : null, mono: true },\n ]}\n />\n\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"client.saml.names_by\")}</span>\n <select\n class=\"select select-sm w-full\"\n value={client.samlNameIdFormat ?? NAME_IDS[0][0]}\n onchange={(event) => update({ samlNameIdFormat: event.currentTarget.value }, t(\"client.notices.saved\"))}\n >\n {#each NAME_IDS as [format, label] (format)}\n <option value={format}>{label}</option>\n {/each}\n </select>\n </label>\n\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"client.saml.certificate\")}</span>\n <textarea\n class=\"textarea textarea-sm w-full font-mono text-xs\"\n rows=\"3\"\n spellcheck=\"false\"\n bind:value={certificate}\n ></textarea>\n <button\n type=\"button\"\n class=\"btn btn-sm self-start\"\n onclick={() =>\n update(\n { samlCertificate: certificate.trim() },\n certificate.trim() ? t(\"client.notices.certificate_saved\") : t(\"client.notices.certificate_removed\"),\n )}\n >\n {t(\"client.save\")}\n </button>\n </label>\n\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"client.saml.attributes\")}</span>\n <textarea\n class=\"textarea textarea-sm w-full font-mono text-xs\"\n rows=\"5\"\n spellcheck=\"false\"\n placeholder={SAML_DEFAULTS}\n bind:value={attributes}\n ></textarea>\n <span class=\"hint\">{t(\"client.saml.attributes_hint\")}</span>\n <button type=\"button\" class=\"btn btn-sm self-start\" onclick={saveAttributes}>{t(\"client.save\")}</button>\n </label>\n\n <Switch\n checked={client.samlRequestsSigned}\n label={t(\"client.saml.requests_signed\")}\n onchange={(on) =>\n update(\n { samlRequestsSigned: on },\n on ? t(\"client.notices.signed_refused\") : t(\"client.notices.signed_read\"),\n )}\n />\n\n <Switch\n checked={client.samlIdpInitiated}\n label={t(\"client.saml.idp_initiated\")}\n onchange={(on) =>\n update(\n { samlIdpInitiated: on },\n on\n ? t(\"client.notices.idp_initiated_on\")\n : t(\"client.notices.idp_initiated_off\"),\n )}\n />\n </Section>\n {/if}\n\n <Section row title={t(\"client.shown.title\")}>\n <div class=\"flex items-center gap-3\">\n <ClientLogo {client} class=\"size-14 rounded-lg border border-base-300 text-xl\" />\n <p class=\"hint\">\n {#if !client.approvedAt}\n {t(\"client.shown.unapproved\")}\n {:else}\n {t(\"client.shown.approved\")}\n {/if}\n </p>\n </div>\n\n <form\n class=\"flex flex-col gap-3\"\n onsubmit={(event) => {\n event.preventDefault();\n saveLinks();\n }}\n >\n {#each LINKS as [key, label, placeholder] (key)}\n <Field {label} bind:value={links[key]} {placeholder} autocapitalize=\"none\" autocorrect=\"off\" spellcheck=\"false\" />\n {/each}\n\n <button type=\"submit\" class=\"btn btn-sm self-start\">{t(\"client.save\")}</button>\n </form>\n </Section>\n\n <Section row title={t(\"client.sign_in.title\")}>\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"client.sign_in.policy\")}</span>\n <select\n class=\"select select-sm w-full\"\n value={client.signInPolicy?.key ?? \"\"}\n onchange={(event) =>\n update({ signInPolicy: event.currentTarget.value }, t(\"client.notices.policy\"))}\n >\n <option value=\"\">\n {t(\"client.sign_in.default\", { name: fallbackPolicy?.name ?? t(\"client.sign_in.built_in\") })}\n </option>\n {#each policies as policy (policy.key)}\n <option value={policy.key}>{policy.name}</option>\n {/each}\n </select>\n </label>\n\n {#if client.signInPolicy?.archivedAt}\n <p class=\"text-xs text-warning\">\n {t(\"client.sign_in.archived\", { name: client.signInPolicy.name, fallback: fallbackPolicy?.name })}\n </p>\n {:else if client.signInPolicy}\n {#if differences.length}\n <div class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"client.sign_in.differs\", { name: fallbackPolicy?.name })}</span>\n <dl class=\"grid grid-cols-[auto_1fr] gap-x-4 gap-y-1 text-sm\">\n {#each differences as { term, value, instead } (term)}\n <dt class=\"opacity-80\">{term}</dt>\n <dd>{value} <span class=\"opacity-75 line-through\">{instead}</span></dd>\n {/each}\n </dl>\n </div>\n {:else}\n <p class=\"hint\">{t(\"client.sign_in.same\", { name: fallbackPolicy?.name })}</p>\n {/if}\n {/if}\n\n {#if !saml}\n <Switch\n checked={client.requirePushedAuthorizationRequests}\n label={t(\"client.sign_in.par\")}\n onchange={(on) =>\n update(\n { requirePushedAuthorizationRequests: on },\n on ? t(\"client.notices.par_on\") : t(\"client.notices.par_off\"),\n )}\n />\n\n <Switch\n checked={client.dpopBoundAccessTokens}\n label={t(\"client.sign_in.dpop\")}\n onchange={(on) =>\n update(\n { dpopBoundAccessTokens: on },\n on ? t(\"client.notices.dpop_on\") : t(\"client.notices.dpop_off\"),\n )}\n />\n {/if}\n\n <Switch\n checked={client.appPasswords}\n label={t(\"client.sign_in.app_passwords\")}\n onchange={(on) =>\n update(\n { appPasswords: on },\n on ? t(\"client.notices.app_passwords_on\") : t(\"client.notices.app_passwords_off\"),\n )}\n />\n <p class=\"hint\">{t(\"client.sign_in.app_passwords_help\")}</p>\n\n {#if client.approvedAt}\n <Switch\n checked={client.consentRequired}\n label={t(\"client.sign_in.consent\")}\n onchange={(on) =>\n update(\n { consentRequired: on },\n on\n ? t(\"client.notices.consent_on\")\n : t(\"client.notices.consent_off\"),\n )}\n />\n {/if}\n\n <form\n class=\"flex flex-col gap-3\"\n onsubmit={(event) => {\n event.preventDefault();\n saveLifetimes();\n }}\n >\n <div class=\"grid gap-3 sm:grid-cols-2\">\n <Field label={t(\"client.sign_in.access\")} type=\"number\" min=\"1\" max=\"1440\" bind:value={accessMinutes} />\n <Field label={t(\"client.sign_in.refresh\")} type=\"number\" min=\"1\" max=\"400\" bind:value={refreshDays} />\n <Field label={t(\"client.sign_in.refresh_absolute\")} type=\"number\" min=\"1\" max=\"400\" bind:value={chainDays} />\n <Field label={t(\"client.sign_in.consent_lifetime\")} type=\"number\" min=\"1\" max=\"400\" bind:value={lasts} />\n </div>\n\n <button type=\"submit\" class=\"btn btn-sm self-start\">{t(\"client.save\")}</button>\n </form>\n\n <Field\n label={t(\"client.sign_in.logout\")}\n bind:value={logoutUri}\n placeholder=\"https://app.example.com/logout\"\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n onsave={() =>\n update(\n { backchannelLogoutUri: logoutUri.trim() || null },\n logoutUri.trim() ? t(\"client.notices.saved\") : t(\"client.notices.cleared\"),\n )}\n />\n\n {#if client.backchannelLogoutUri}\n <Switch\n checked={client.backchannelLogoutSessionRequired}\n label={t(\"client.sign_in.logout_session\")}\n onchange={(on) => update({ backchannelLogoutSessionRequired: on }, t(\"client.notices.saved\"))}\n />\n {/if}\n </Section>\n {/if}\n </div>\n </Page>\n{/if}\n","<script>\n import { t } from \"./lib/copy.js\";\n import Link from \"./ui/Link.svelte\";\n\n let { organization, children } = $props();\n</script>\n\n<span class=\"flex flex-wrap items-center gap-2\">\n <Link to={`/organizations/${organization.key}`} class=\"link link-hover font-medium\">{organization.name}</Link>\n {#if organization.ownerCount === 0}\n <span class=\"badge badge-warning badge-xs\">{t(\"organization_cell.no_owner\")}</span>\n {/if}\n</span>\n<span class=\"font-mono text-xs opacity-75\">{organization.key}</span>\n{@render children?.()}\n","<script>\n import { t } from \"./lib/copy.js\";\n\n let { organization, class: klass = \"flex flex-col\" } = $props();\n</script>\n\n<span class={klass}>\n <span>{t(\"organization_headcount.members\", { count: organization.memberCount })}</span>\n {#if organization.pendingCount}\n <span class=\"text-xs opacity-75\">{t(\"organization_headcount.invited\", { count: organization.pendingCount })}</span>\n {/if}\n</span>\n","<script>\n import { t } from \"./lib/copy.js\";\n import { createFeedback } from \"./lib/feedback.svelte.js\";\n import { day } from \"./lib/format.js\";\n import OrganizationCell from \"./OrganizationCell.svelte\";\n import OrganizationHeadcount from \"./OrganizationHeadcount.svelte\";\n import { useRouter } from \"./lib/router.svelte.js\";\n import Section from \"./ui/Section.svelte\";\n import Field from \"./ui/Field.svelte\";\n import Link from \"./ui/Link.svelte\";\n import Notices from \"./ui/Notices.svelte\";\n import Page from \"./ui/Page.svelte\";\n import Row from \"./ui/Row.svelte\";\n import Spinner from \"./ui/Spinner.svelte\";\n import Table from \"./ui/Table.svelte\";\n\n let { api } = $props();\n\n const router = useRouter();\n const feedback = createFeedback();\n\n const QUERY = `\n query Organizations {\n active: organizations {\n key name roles memberCount ownerCount pendingCount\n signInPolicy { name }\n providers { name }\n }\n archived: organizations(archived: true) { key name memberCount archivedAt }\n }\n `;\n\n const COLUMNS = [\n t(\"organizations.columns.organization\"),\n { label: t(\"organizations.columns.members\"), hide: true },\n { label: t(\"organizations.columns.roles\"), hide: true },\n { label: t(\"organizations.columns.signs_in\"), hide: true },\n ];\n\n let data = $state(null);\n let loading = $state(true);\n let busy = $state(false);\n let draft = $state(null);\n let keyTouched = $state(false);\n\n async function load() {\n loading = true;\n\n const answer = await feedback.attempt(() => api.query(QUERY));\n\n loading = false;\n\n if (answer) data = answer;\n }\n\n load();\n\n const slug = (name) =>\n name\n .toLowerCase()\n .normalize(\"NFKD\")\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\");\n\n function add() {\n draft = { key: \"\", name: \"\" };\n keyTouched = false;\n feedback.clear();\n }\n\n function named(name) {\n draft.name = name;\n if (!keyTouched) draft.key = slug(name);\n }\n\n async function save() {\n busy = true;\n\n const answer = await feedback.attempt(() =>\n api.query(\n `mutation Create($key: ID!, $name: String!) {\n createOrganization(key: $key, name: $name) { organization { key } }\n }`,\n { key: draft.key.trim(), name: draft.name.trim() },\n ),\n );\n\n busy = false;\n\n if (answer) router.go(`/organizations/${answer.createOrganization.organization.key}`);\n }\n\n async function restore(organization) {\n const done = await feedback.attempt(\n () =>\n api.query(`mutation Restore($key: ID!) { restoreOrganization(key: $key) { organization { key } } }`, {\n key: organization.key,\n }),\n t(\"organizations.restored\", { name: organization.name }),\n );\n\n if (done) await load();\n }\n\n function members(organization) {\n const held = t(\"organizations.members\", { count: organization.memberCount });\n\n return organization.pendingCount\n ? t(\"organizations.members_invited\", { members: held, count: organization.pendingCount })\n : held;\n }\n\n function signsIn(organization) {\n return [organization.signInPolicy?.name, ...organization.providers.map((provider) => provider.name)]\n .filter(Boolean)\n .join(\", \");\n }\n</script>\n\n<Page\n title={t(\"organizations.title\")}\n lede={t(\"organizations.lede\")}\n>\n {#snippet actions()}\n <button type=\"button\" class=\"btn btn-primary btn-sm\" onclick={add}>{t(\"organizations.add\")}</button>\n {/snippet}\n\n <Notices feedback={feedback.state} />\n\n {#if draft}\n <Section title={t(\"organizations.add\")} lede={t(\"organizations.add_lede\")}>\n <div class=\"grid gap-3 sm:grid-cols-2\">\n <Field label={t(\"organizations.name\")} value={draft.name} oninput={(event) => named(event.currentTarget.value)} placeholder=\"Acme\" />\n <Field\n label={t(\"organizations.key\")}\n bind:value={draft.key}\n oninput={() => (keyTouched = true)}\n placeholder=\"acme\"\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n />\n </div>\n <p class=\"hint\">\n {t(\"organizations.key_hint\")}\n <span class=\"font-mono\">organization={draft.key || t(\"organizations.key_word\")}</span>{t(\"organizations.key_hint_end\")}\n </p>\n <div class=\"flex gap-2\">\n <button\n type=\"button\"\n class=\"btn btn-primary btn-sm\"\n disabled={busy || !draft.key.trim() || !draft.name.trim()}\n onclick={save}\n >\n {busy ? t(\"organizations.adding\") : t(\"organizations.add\")}\n </button>\n <button type=\"button\" class=\"btn btn-ghost btn-sm\" onclick={() => (draft = null)}>{t(\"organizations.cancel\")}</button>\n </div>\n </Section>\n {/if}\n\n {#if loading && !data}\n <Spinner />\n {:else if data}\n <Table\n columns={COLUMNS}\n count={data.active.length}\n empty={t(\"organizations.empty\")}\n >\n {#snippet rows()}\n {#each data.active as organization (organization.key)}\n <Row to={`/organizations/${organization.key}`}>\n <td>\n <div class=\"flex min-w-0 flex-col gap-0.5\">\n <OrganizationCell {organization}>\n <span class=\"text-xs opacity-85 md:hidden\">{members(organization)}</span>\n </OrganizationCell>\n </div>\n </td>\n <td class=\"hidden text-sm md:table-cell\">\n <OrganizationHeadcount {organization} />\n </td>\n <td class=\"hidden md:table-cell\">\n <div class=\"flex max-w-64 flex-wrap gap-1\">\n {#each organization.roles as role (role)}\n <span class=\"badge badge-ghost badge-sm\">{role}</span>\n {/each}\n </div>\n </td>\n <td class=\"hidden text-sm md:table-cell\">\n <span class:opacity-60={!signsIn(organization)}>{signsIn(organization) || t(\"organizations.tenant_policy\")}</span>\n </td>\n </Row>\n {/each}\n {/snippet}\n </Table>\n\n {#if data.archived.length}\n <Section title={t(\"organizations.archived.title\")} lede={t(\"organizations.archived.lede\")}>\n {#each data.archived as organization (organization.key)}\n <div class=\"flex flex-wrap items-center justify-between gap-2\">\n <div class=\"flex min-w-0 flex-col\">\n <Link to={`/organizations/${organization.key}`} class=\"link link-hover text-sm font-medium\">\n {organization.name}\n </Link>\n <span class=\"hint\">\n <span class=\"font-mono\">{organization.key}</span>\n {t(\"organizations.archived.detail\", {\n day: day(organization.archivedAt),\n members: t(\"organizations.members\", { count: organization.memberCount }),\n })}\n </span>\n </div>\n <button type=\"button\" class=\"btn btn-ghost btn-sm\" onclick={() => restore(organization)}>{t(\"organizations.restore\")}</button>\n </div>\n {/each}\n </Section>\n {/if}\n {/if}\n</Page>\n","<script>\n import Link from \"./Link.svelte\";\n\n let { counts } = $props();\n</script>\n\n<div class=\"tally\">\n {#each counts as count (count.label)}\n {#if count.to}\n <Link to={count.to} class=\"tally-cell\">\n <span class=\"tally-figure\">{count.value}</span>\n <span class=\"tally-label\">{count.label}</span>\n </Link>\n {:else}\n <div class=\"tally-cell\">\n <span class=\"tally-figure\">{count.value}</span>\n <span class=\"tally-label\">{count.label}</span>\n </div>\n {/if}\n {/each}\n</div>\n","<script>\n import { t } from \"./lib/copy.js\";\n import { createFeedback } from \"./lib/feedback.svelte.js\";\n import { day, since } from \"./lib/format.js\";\n import { useRouter } from \"./lib/router.svelte.js\";\n import Parts from \"./ui/Parts.svelte\";\n import Section from \"./ui/Section.svelte\";\n import Facts from \"./ui/Facts.svelte\";\n import Field from \"./ui/Field.svelte\";\n import Events from \"./Events.svelte\";\n import Link from \"./ui/Link.svelte\";\n import Notices from \"./ui/Notices.svelte\";\n import Page from \"./ui/Page.svelte\";\n import Select from \"./ui/Select.svelte\";\n import Spinner from \"./ui/Spinner.svelte\";\n import Table from \"./ui/Table.svelte\";\n import Tally from \"./ui/Tally.svelte\";\n\n let { api, organizationKey, part = null } = $props();\n\n const router = useRouter();\n const feedback = createFeedback();\n\n const BUILT_IN = [\"owner\", \"member\"];\n\n const QUERY = `\n query Organization($key: ID!) {\n organization(key: $key) {\n uuid key name roles archivedAt createdAt\n memberCount ownerCount pendingCount liveTokenCount\n signInPolicy { key }\n providers { key name roleClaim roleMap unmappedRole }\n domains { domain verifiedAt provider { name } }\n provisioningTokens { id }\n members {\n role pending provisioned invitedAs invitedAt expiresAt expired createdAt\n invitedBy { identifier }\n actor { uuid identifier }\n }\n events {\n id action label createdAt ipAddress details\n actor { uuid identifier } by { uuid identifier } client { clientId name } device { id label }\n }\n }\n signInPolicies { key name }\n providers { key name organization { key } }\n }\n `;\n\n const LENSES = [\n [\"all\", t(\"organization.lenses.all\")],\n [\"owners\", t(\"organization.lenses.owners\")],\n [\"invited\", t(\"organization.lenses.invited\")],\n ];\n\n let organization = $state(null);\n let policies = $state([]);\n let providers = $state([]);\n const idle = () => ({ provider: \"\", roleClaim: \"\", roleMap: \"\", unmappedRole: \"\" });\n\n let handing = $state(idle());\n let loading = $state(true);\n let busy = $state(false);\n let adding = $state(null);\n let lens = $state(\"all\");\n let naming = $state(\"\");\n let role = $state(\"\");\n let invited = $state(null);\n\n async function load() {\n loading = true;\n\n const answer = await feedback.attempt(() => api.query(QUERY, { key: organizationKey }));\n\n loading = false;\n\n if (!answer) return;\n\n organization = answer.organization;\n policies = answer.signInPolicies;\n providers = answer.providers;\n\n if (organization) naming = organization.name;\n }\n\n load();\n\n const roleOptions = $derived((organization?.roles ?? []).map((held) => [held, held]));\n\n const holding = $derived(\n Object.fromEntries(\n (organization?.roles ?? []).map((held) => [\n held,\n organization.members.filter((member) => member.role === held).length,\n ]),\n ),\n );\n\n const shown = $derived(\n (organization?.members ?? [])\n .filter((member) =>\n lens === \"owners\" ? member.role === \"owner\" && !member.pending : lens === \"invited\" ? member.pending : true,\n )\n .toSorted(\n (a, b) =>\n Number(a.pending) - Number(b.pending) ||\n Number(b.role === \"owner\") - Number(a.role === \"owner\") ||\n named(a).localeCompare(named(b)),\n ),\n );\n\n const revoking = (plain, tokens) =>\n organization.liveTokenCount\n ? t(tokens, { organization: organization.name, count: organization.liveTokenCount })\n : t(plain, { organization: organization.name });\n\n const counts = $derived(\n organization\n ? [\n {\n label: t(\"organization.counts.members\", { count: organization.memberCount }),\n value: organization.memberCount,\n },\n {\n label: t(\"organization.counts.owners\", { count: organization.ownerCount }),\n value: organization.ownerCount,\n },\n { label: t(\"organization.counts.invitations\"), value: organization.pendingCount },\n { label: t(\"organization.counts.live_tokens\"), value: organization.liveTokenCount },\n ]\n : [],\n );\n\n const facts = $derived(\n organization\n ? [\n { term: t(\"organization.facts.key\"), value: organization.key, mono: true },\n { term: t(\"organization.facts.id\"), value: organization.uuid, mono: true },\n { term: t(\"organization.facts.asked_for_with\"), value: `organization=${organization.key}`, mono: true },\n { term: t(\"organization.facts.created\"), value: day(organization.createdAt) },\n ]\n : [],\n );\n\n function named(member) {\n return member.pending ? (member.invitedAs ?? member.actor.identifier) : member.actor.identifier;\n }\n\n function lastOwner(member) {\n return member.role === \"owner\" && !member.pending && organization.ownerCount === 1;\n }\n\n function status(member) {\n if (member.expired) return t(\"organization.status.expired\", { when: since(member.expiresAt) });\n\n if (member.pending) {\n return member.invitedBy\n ? t(\"organization.status.invited_by\", {\n when: since(member.invitedAt),\n by: member.invitedBy.identifier,\n })\n : t(\"organization.status.invited\", { when: since(member.invitedAt) });\n }\n\n return t(member.provisioned ? \"organization.status.from_directory\" : \"organization.status.since\", {\n day: day(member.createdAt),\n });\n }\n\n async function run(query, variables, notice) {\n busy = true;\n\n const answer = await feedback.attempt(() => api.query(query, variables), notice);\n\n busy = false;\n\n if (answer) await load();\n\n return answer;\n }\n\n function openAdding() {\n adding = { email: \"\", role: \"member\" };\n invited = null;\n feedback.clear();\n }\n\n async function add() {\n const email = adding.email.trim();\n\n invited = null;\n\n const answer = await run(\n `mutation Add($organization: ID!, $email: String!, $role: String!) {\n addMember(organization: $organization, email: $email, role: $role) { delivered url }\n }`,\n { organization: organization.key, email, role: adding.role },\n t(\"organization.notices.invited\", { email, role: adding.role }),\n );\n\n if (!answer) return;\n\n adding = null;\n\n if (!answer.addMember.delivered && answer.addMember.url) invited = answer.addMember.url;\n }\n\n function setRole(member, chosen) {\n run(\n `mutation Role($organization: ID!, $uuid: ID!, $role: String!) {\n setMemberRole(organization: $organization, uuid: $uuid, role: $role) { membership { role } }\n }`,\n { organization: organization.key, uuid: member.actor.uuid, role: chosen },\n t(\"organization.notices.role_set\", { name: named(member), role: chosen }),\n );\n }\n\n function remove(member) {\n const question = member.pending\n ? t(\"organization.questions.withdraw\", { name: named(member) })\n : t(\"organization.questions.remove\", { name: named(member), organization: organization.name });\n\n if (!confirm(question)) return;\n\n run(\n `mutation Remove($organization: ID!, $uuid: ID!) {\n removeMember(organization: $organization, uuid: $uuid) { organization { key } }\n }`,\n { organization: organization.key, uuid: member.actor.uuid },\n member.pending\n ? t(\"organization.notices.withdrawn\", { name: named(member) })\n : t(\"organization.notices.removed\", { name: named(member), organization: organization.name }),\n );\n }\n\n function resend(member) {\n run(\n `mutation Resend($organization: ID!, $uuid: ID!) {\n resendOrganizationInvitation(organization: $organization, uuid: $uuid) { delivered }\n }`,\n { organization: organization.key, uuid: member.actor.uuid },\n t(\"organization.notices.resent\", { name: named(member) }),\n );\n }\n\n function saveRoles(roles, notice) {\n return run(\n `mutation Roles($key: ID!, $roles: [String!]) {\n updateOrganization(key: $key, roles: $roles) { organization { key } }\n }`,\n { key: organization.key, roles },\n notice,\n );\n }\n\n const custom = $derived((organization?.roles ?? []).filter((held) => !BUILT_IN.includes(held)));\n\n async function addRole() {\n const chosen = role.trim().toLowerCase();\n\n if (!chosen) return;\n\n if (\n await saveRoles(\n [...custom, chosen],\n t(\"organization.notices.role_added\", { organization: organization.name, role: chosen }),\n )\n )\n role = \"\";\n }\n\n function dropRole(held) {\n saveRoles(\n custom.filter((kept) => kept !== held),\n t(\"organization.notices.role_dropped\", { organization: organization.name, role: held }),\n );\n }\n\n function rename() {\n run(\n `mutation Rename($key: ID!, $name: String) {\n updateOrganization(key: $key, name: $name) { organization { key } }\n }`,\n { key: organization.key, name: naming.trim() },\n t(\"organization.notices.saved\"),\n );\n }\n\n const lines = (map) =>\n Object.entries(map ?? {})\n .map(([group, held]) => `${group} = ${held}`)\n .join(\"\\n\");\n\n const parsed = (text) =>\n Object.fromEntries(\n text\n .split(\"\\n\")\n .map((line) => line.split(\"=\"))\n .filter((parts) => parts.length === 2 && parts[0].trim() && parts[1].trim())\n .map(([group, held]) => [group.trim(), held.trim()]),\n );\n\n const handable = $derived(\n providers.filter((provider) => !provider.organization),\n );\n\n function pickProvider(key) {\n const held = organization.providers.find((provider) => provider.key === key);\n\n handing = {\n provider: key,\n roleClaim: held?.roleClaim ?? \"\",\n roleMap: lines(held?.roleMap),\n unmappedRole: held?.unmappedRole ?? \"\",\n };\n }\n\n function handOver() {\n run(\n `mutation Hand($key: ID!, $organization: ID, $roleClaim: String, $roleMap: JSON, $unmappedRole: String) {\n setProviderOrganization(key: $key, organization: $organization, roleClaim: $roleClaim, roleMap: $roleMap, unmappedRole: $unmappedRole) {\n provider { key }\n }\n }`,\n {\n key: handing.provider,\n organization: organization.key,\n roleClaim: handing.roleClaim.trim() || null,\n roleMap: parsed(handing.roleMap),\n unmappedRole: handing.unmappedRole || null,\n },\n t(\"organization.notices.provider_saved\"),\n ).then((answer) => {\n if (answer) handing = idle();\n });\n }\n\n function handBack(provider) {\n if (\n !confirm(\n t(\"organization.questions.hand_back\", { provider: provider.name, organization: organization.name }),\n )\n )\n return;\n\n run(\n `mutation Back($key: ID!) { setProviderOrganization(key: $key, organization: null) { provider { key } } }`,\n { key: provider.key },\n t(\"organization.notices.provider_back\", { provider: provider.name }),\n );\n }\n\n function setPolicy(key) {\n run(\n `mutation Policy($key: ID!, $policy: ID!) {\n updateOrganization(key: $key, signInPolicy: $policy) { organization { key } }\n }`,\n { key: organization.key, policy: key },\n t(\"organization.notices.saved\"),\n );\n }\n\n async function archive() {\n if (!confirm(revoking(\"organization.questions.archive\", \"organization.questions.archive_tokens\"))) return;\n\n await run(\n `mutation Archive($key: ID!) { archiveOrganization(key: $key) { organization { key } } }`,\n { key: organization.key },\n t(\"organization.notices.archived\", { organization: organization.name }),\n );\n }\n\n function restore() {\n run(\n `mutation Restore($key: ID!) { restoreOrganization(key: $key) { organization { key } } }`,\n { key: organization.key },\n t(\"organization.notices.restored\", { organization: organization.name }),\n );\n }\n</script>\n\n<Page\n title={organization?.name ?? t(\"organization.title\")}\n id={organization?.key}\n back={{ to: \"/organizations\", label: t(\"organization.back\") }}\n lede={organization\n ? organization.archivedAt\n ? t(\"organization.archived_lede\", { when: since(organization.archivedAt) })\n : t(\"organization.lede\", { key: organization.key })\n : null}\n>\n <Notices feedback={feedback.state} />\n\n {#if loading && !organization}\n <Spinner />\n {:else if !organization}\n <p class=\"hint\">{t(\"organization.missing\", { key: organizationKey })}\n <Link to=\"/organizations\">{t(\"organization.all\")}</Link></p>\n {:else}\n {#if organization.archivedAt}\n <div class=\"alert alert-warning alert-soft flex flex-wrap items-center justify-between gap-3\" role=\"status\">\n <span>{t(\"organization.archived_alert\", { day: day(organization.archivedAt) })}</span>\n <button type=\"button\" class=\"btn btn-sm\" disabled={busy} onclick={restore}>{t(\"organization.restore\")}</button>\n </div>\n {/if}\n\n {#if !organization.archivedAt && organization.ownerCount === 0}\n <div class=\"alert alert-warning alert-soft\" role=\"status\">\n {t(\"organization.ownerless\", { organization: organization.name })}\n </div>\n {/if}\n\n <Tally {counts} />\n\n {#if invited}\n <div class=\"alert alert-info alert-soft flex-col items-start gap-2\" role=\"status\">\n <span class=\"font-medium\">{t(\"organization.invitation_link\")}</span>\n <code class=\"font-mono text-xs break-all\">{invited}</code>\n </div>\n {/if}\n\n <Parts\n base={`/organizations/${organization.key}`}\n {part}\n label={t(\"organization.parts.label\")}\n parts={[\n [null, \"\", t(\"organization.parts.members\")],\n [\"sign-in\", \"/sign-in\", t(\"organization.parts.sign_in\")],\n [\"roles\", \"/roles\", t(\"organization.parts.roles\")],\n [\"activity\", \"/activity\", t(\"organization.parts.activity\")],\n [\"general\", \"/general\", t(\"organization.parts.general\")],\n ]}\n />\n\n <div class=\"grid gap-4\">\n {#if part === \"sign-in\"}\n <Section row title={t(\"organization.signing_in.policy\")} lede={t(\"organization.signing_in.lede\")}>\n <Select\n name={t(\"organization.signing_in.policy\")}\n value={organization.signInPolicy?.key ?? \"\"}\n options={[[\"\", t(\"organization.signing_in.inherited\")], ...policies.map((policy) => [policy.key, policy.name])]}\n disabled={busy}\n onchange={setPolicy}\n />\n </Section>\n\n <Section row title={t(\"organization.signing_in.providers\")}>\n <div class=\"flex flex-col gap-2\">\n\n {#each organization.providers as provider (provider.key)}\n <div class=\"flex flex-wrap items-center justify-between gap-2 sheet p-3\">\n <div class=\"flex min-w-0 flex-col\">\n <span class=\"font-medium\">{provider.name}</span>\n <span class=\"hint\">\n {t(\"organization.signing_in.joins_as\", {\n mapping: Object.keys(provider.roleMap).length\n ? Object.entries(provider.roleMap)\n .map(([group, held]) => `${group} → ${held}`)\n .join(\", \")\n : t(\"organization.signing_in.no_groups_mapped\"),\n role: provider.unmappedRole ?? \"member\",\n })}\n </span>\n </div>\n <div class=\"flex gap-2\">\n <button type=\"button\" class=\"btn btn-sm\" disabled={busy} onclick={() => pickProvider(provider.key)}>{t(\"organization.signing_in.edit\")}</button>\n <button type=\"button\" class=\"btn btn-ghost btn-sm\" disabled={busy} onclick={() => handBack(provider)}>\n {t(\"organization.signing_in.hand_back\")}\n </button>\n </div>\n </div>\n {:else}\n <p class=\"hint\">\n {t(\"organization.signing_in.no_providers\")}\n </p>\n {/each}\n\n {#if handable.length && !handing.provider}\n <Select\n value=\"\"\n name={t(\"organization.signing_in.give_provider\")}\n options={[\n [\"\", t(\"organization.signing_in.give_provider\")],\n ...handable.map((provider) => [provider.key, provider.name]),\n ]}\n onchange={pickProvider}\n />\n {/if}\n </div>\n\n {#if handing.provider}\n <div class=\"flex flex-col gap-3 sheet p-3\">\n <span class=\"font-medium\">\n {providers.find((provider) => provider.key === handing.provider)?.name ?? handing.provider}\n </span>\n <div class=\"grid gap-3 sm:grid-cols-2\">\n <Field label={t(\"organization.signing_in.groups_claim\")} bind:value={handing.roleClaim} placeholder=\"groups\" />\n <Select\n label={t(\"organization.signing_in.unmapped_role\")}\n value={handing.unmappedRole}\n options={[[\"\", \"member\"], ...roleOptions.filter(([held]) => held !== \"member\")]}\n onchange={(chosen) => (handing.unmappedRole = chosen)}\n />\n </div>\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"organization.signing_in.role_map\")}</span>\n <textarea\n class=\"textarea w-full font-mono\"\n rows=\"3\"\n bind:value={handing.roleMap}\n placeholder=\"Acme Admins = owner\"\n ></textarea>\n <p class=\"hint\">{t(\"organization.signing_in.role_map_hint\")}</p>\n </label>\n <div class=\"flex gap-2\">\n <button type=\"button\" class=\"btn btn-primary btn-sm\" disabled={busy} onclick={handOver}>{t(\"organization.signing_in.save\")}</button>\n <button\n type=\"button\"\n class=\"btn btn-ghost btn-sm\"\n onclick={() => (handing = idle())}\n >\n {t(\"organization.signing_in.cancel\")}\n </button>\n </div>\n </div>\n {/if}\n </Section>\n\n <Section row title={t(\"organization.signing_in.domains\")}>\n <div class=\"flex flex-col gap-2\">\n\n {#each organization.domains as claim (claim.domain)}\n <div class=\"flex flex-wrap items-center justify-between gap-2\">\n <span class=\"font-mono text-sm break-all\">{claim.domain}</span>\n <span class=\"hint\">\n {claim.verifiedAt\n ? t(\"organization.signing_in.proven\", { day: day(claim.verifiedAt) })\n : t(\"organization.signing_in.waiting\")} · {claim.provider?.name}\n </span>\n </div>\n {:else}\n <p class=\"hint\">\n {t(\"organization.signing_in.no_domains\")}\n <Link to=\"/settings\" class=\"link\">{t(\"organization.signing_in.domains_link\")}</Link>\n </p>\n {/each}\n </div>\n </Section>\n\n <Section row title={t(\"organization.signing_in.provisioning\")}>\n <div class=\"flex flex-col gap-2\">\n <p class=\"hint\">\n {organization.provisioningTokens.length\n ? t(\"organization.signing_in.tokens_reach\", { count: organization.provisioningTokens.length })\n : t(\"organization.signing_in.no_tokens\")}\n <Link to=\"/directory\" class=\"link\">{t(\"organization.signing_in.provisioning_link\")}</Link>\n </p>\n </div>\n </Section>\n {:else if part === \"roles\"}\n <Section row title={t(\"organization.roles.title\")} lede={t(\"organization.roles.lede\")}>\n <div class=\"flex flex-wrap gap-2\">\n {#each organization.roles as held (held)}\n <span class=\"badge badge-lg gap-1.5 {BUILT_IN.includes(held) ? 'badge-ghost' : 'badge-outline'}\">\n <span class=\"font-medium\">{held}</span>\n <span class=\"opacity-70\">{holding[held] ?? 0}</span>\n {#if !BUILT_IN.includes(held)}\n <button\n type=\"button\"\n class=\"-mr-1 cursor-pointer px-1 opacity-70 hover:opacity-100 disabled:cursor-not-allowed disabled:opacity-30\"\n aria-label={t(\"organization.roles.stop_offering\", { role: held })}\n title={holding[held]\n ? t(\"organization.roles.held\", { count: holding[held] })\n : t(\"organization.roles.stop_offering\", { role: held })}\n disabled={busy || holding[held] > 0}\n onclick={() => dropRole(held)}\n >\n ×\n </button>\n {/if}\n </span>\n {/each}\n </div>\n <Field\n label={t(\"organization.roles.offer\")}\n bind:value={role}\n placeholder=\"support\"\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n onsave={addRole}\n save={t(\"organization.roles.add\")}\n />\n <p class=\"hint\">{t(\"organization.roles.hint\")}</p>\n </Section>\n {:else if part === \"activity\"}\n <Section lede={t(\"organization.activity.lede\")}>\n <Events events={organization.events} empty={t(\"organization.activity.empty\")} limit={25} collapse />\n </Section>\n {:else if part === \"general\"}\n <Section row title={t(\"organization.details.title\")}>\n <Field label={t(\"organization.details.name\")} bind:value={naming} onsave={rename} />\n <Facts rows={facts} />\n </Section>\n\n {#if !organization.archivedAt}\n <Section\n row\n title={t(\"organization.archive.title\")}\n lede={revoking(\"organization.archive.lede\", \"organization.archive.lede_tokens\")}\n >\n <button type=\"button\" class=\"btn btn-sm btn-error btn-outline self-start\" disabled={busy} onclick={archive}>\n {t(\"organization.archive.button\", { organization: organization.name })}\n </button>\n </Section>\n {/if}\n {:else}\n <Section\n title={t(\"organization.members.title\")}\n lede={t(\"organization.members.lede\")}\n >\n {#snippet actions()}\n <div class=\"range\" role=\"group\" aria-label={t(\"organization.members.who\")}>\n {#each LENSES as [key, label] (key)}\n <button type=\"button\" aria-pressed={lens === key} onclick={() => (lens = key)}>{label}</button>\n {/each}\n </div>\n {#if !organization.archivedAt}\n <button type=\"button\" class=\"btn btn-primary btn-sm\" onclick={openAdding}>{t(\"organization.members.add\")}</button>\n {/if}\n {/snippet}\n\n {#if adding}\n <div class=\"grid gap-3 sm:grid-cols-[minmax(0,1fr)_10rem_auto] sm:items-end\">\n <Field label={t(\"organization.members.email\")} type=\"email\" bind:value={adding.email} placeholder=\"person@example.com\" />\n <Select label={t(\"organization.members.role\")} value={adding.role} options={roleOptions} onchange={(chosen) => (adding.role = chosen)} />\n <div class=\"flex gap-2\">\n <button type=\"button\" class=\"btn btn-primary btn-sm\" disabled={busy || !adding.email.trim()} onclick={add}>\n {t(\"organization.members.invite\")}\n </button>\n <button type=\"button\" class=\"btn btn-ghost btn-sm\" onclick={() => (adding = null)}>{t(\"organization.members.cancel\")}</button>\n </div>\n </div>\n <p class=\"hint\">\n {t(\"organization.members.hint\")}\n </p>\n {/if}\n\n <Table\n columns={[\n t(\"organization.members.actor\"),\n { label: t(\"organization.members.role\"), hide: true },\n { label: \"\", right: true, hide: true },\n ]}\n count={shown.length}\n empty={t(`organization.members.empty.${lens}`)}\n >\n {#snippet rows()}\n {#each shown as member (member.actor.uuid)}\n <tr>\n <td class=\"w-full min-w-0\">\n <div class=\"flex min-w-0 flex-col gap-0.5\">\n <span class=\"flex flex-wrap items-center gap-2\">\n <Link to={`/actors/${member.actor.uuid}`} class=\"link link-hover font-medium break-all\">\n {named(member)}\n </Link>\n {#if member.expired}<span class=\"badge badge-sm badge-error badge-soft\">{t(\"organization.members.expired\")}</span>\n {:else if member.pending}<span class=\"badge badge-sm badge-warning badge-soft\">{t(\"organization.members.invited\")}</span>{/if}\n {#if lastOwner(member)}<span class=\"badge badge-sm badge-ghost\">{t(\"organization.members.last_owner\")}</span>{/if}\n </span>\n <span class=\"hint\">{status(member)}</span>\n <div class=\"mt-2 flex flex-wrap items-center gap-2 md:hidden\">\n <div class=\"min-w-28 flex-1 basis-28\">{@render roleOf(member)}</div>\n <div class=\"-me-3 flex shrink-0\">{@render removeOf(member)}</div>\n </div>\n </div>\n </td>\n <td class=\"hidden w-44 min-w-44 md:table-cell\">\n {@render roleOf(member)}\n </td>\n <td class=\"hidden text-right whitespace-nowrap md:table-cell\">\n {@render removeOf(member)}\n </td>\n </tr>\n {/each}\n {/snippet}\n </Table>\n </Section>\n {/if}\n </div>\n {/if}\n</Page>\n\n{#snippet roleOf(member)}\n <Select\n value={member.role}\n options={roleOptions}\n name={t(\"organization.members.role_of\", { name: named(member) })}\n disabled={busy || lastOwner(member) || Boolean(organization.archivedAt)}\n onchange={(chosen) => setRole(member, chosen)}\n />\n{/snippet}\n\n{#snippet removeOf(member)}\n {#if member.pending}\n <button\n type=\"button\"\n class=\"btn btn-ghost btn-sm\"\n disabled={busy || Boolean(organization.archivedAt)}\n onclick={() => resend(member)}\n >\n {t(\"organization.members.send_again\")}\n </button>\n {/if}\n <button\n type=\"button\"\n class=\"btn btn-ghost btn-sm btn-error\"\n disabled={busy || lastOwner(member)}\n title={lastOwner(member) ? t(\"organization.members.owner_first\") : null}\n onclick={() => remove(member)}\n >\n {member.pending ? t(\"organization.members.withdraw\") : t(\"organization.members.remove\")}\n </button>\n{/snippet}\n","<script>\n import { createFeedback } from \"./lib/feedback.svelte.js\";\n import { t } from \"./lib/copy.js\";\n import { since } from \"./lib/format.js\";\n import Notices from \"./ui/Notices.svelte\";\n import Section from \"./ui/Section.svelte\";\n import Select from \"./ui/Select.svelte\";\n\n let { api } = $props();\n\n const QUERY = `\n query Domains {\n domainClaims { domain recordName recordValue verifiedAt missingSince provider { key name } }\n providers { key name }\n tenant { customHost origins }\n }\n `;\n\n const feedback = createFeedback();\n\n let data = $state(null);\n let busy = $state(false);\n let domain = $state(\"\");\n let host = $state(\"\");\n\n async function load() {\n const answer = await feedback.attempt(() => api.query(QUERY));\n\n if (answer) {\n data = answer;\n host = answer.tenant.customHost ?? \"\";\n }\n }\n\n load();\n\n const providerOptions = $derived([\n [\"\", t(\"domains.here\")],\n ...(data?.providers ?? []).map((provider) => [provider.key, t(\"domains.to\", { name: provider.name })]),\n ]);\n\n const proven = $derived((data?.domainClaims ?? []).filter((held) => held.verifiedAt));\n\n async function run(query, variables, notice) {\n busy = true;\n\n const answer = await feedback.attempt(() => api.query(query, variables), notice);\n\n busy = false;\n\n if (answer) await load();\n\n return answer;\n }\n\n async function claim() {\n const value = domain.trim();\n\n if (!value) return;\n\n const answer = await run(\n `mutation Claim($domain: String!) { claimDomain(domain: $domain) { domainClaim { domain } } }`,\n { domain: value },\n t(\"domains.claimed\", { domain: value }),\n );\n\n if (answer) domain = \"\";\n }\n\n async function check(held) {\n busy = true;\n\n const answer = await feedback.attempt(() =>\n api.query(`mutation Check($domain: String!) { checkDomain(domain: $domain) { found } }`, { domain: held.domain }),\n );\n\n busy = false;\n\n if (!answer) return;\n\n if (answer.checkDomain.found) {\n feedback.say(t(\"domains.proven\", { domain: held.domain }));\n } else {\n feedback.blame(t(\"domains.unanswered\", { name: held.recordName }));\n }\n\n await load();\n }\n\n function route(held, provider) {\n run(\n `mutation Route($domain: String!, $provider: ID) {\n updateDomainClaim(domain: $domain, provider: $provider) { domainClaim { domain } }\n }`,\n { domain: held.domain, provider: provider || null },\n provider ? t(\"domains.routed_away\", { domain: held.domain }) : t(\"domains.routed_here\", { domain: held.domain }),\n );\n }\n\n function release(held) {\n if (!confirm(t(\"domains.release_confirm\", { domain: held.domain }))) return;\n\n run(\n `mutation Release($domain: String!) { releaseDomain(domain: $domain) { domain } }`,\n { domain: held.domain },\n t(\"domains.released\", { domain: held.domain }),\n );\n }\n\n function serve(value) {\n if (!value && !confirm(t(\"domains.stop_confirm\", { host: data.tenant.customHost }))) return;\n\n run(\n `mutation Serve($host: String) { serveDomain(host: $host) { tenant { customHost } } }`,\n { host: value },\n value ? t(\"domains.served\", { host: value }) : t(\"domains.unserved\"),\n );\n }\n</script>\n\n<Section row title={t(\"domains.title\")} help={t(\"domains.help\")}>\n <Notices feedback={feedback.state} />\n\n {#if data}\n {#if data.domainClaims.length}\n <ul class=\"compact-list\">\n {#each data.domainClaims as held (held.domain)}\n <li class=\"flex-wrap\">\n <code class=\"min-w-0 truncate font-mono text-sm\">{held.domain}</code>\n\n {#if held.missingSince}\n <span class=\"badge badge-warning badge-soft badge-sm\">{t(\"domains.missing\", { since: since(held.missingSince) })}</span>\n {:else if !held.verifiedAt}\n <span class=\"badge badge-ghost badge-sm\">{t(\"domains.unproven\")}</span>\n {/if}\n\n <div class=\"ml-auto flex items-center gap-1\">\n {#if held.verifiedAt && !held.missingSince}\n <Select\n name={t(\"domains.send\", { domain: held.domain })}\n value={held.provider?.key ?? \"\"}\n options={providerOptions}\n disabled={busy}\n onchange={(key) => route(held, key)}\n />\n {:else}\n <button type=\"button\" class=\"btn btn-sm\" disabled={busy} onclick={() => check(held)}>{t(\"domains.check\")}</button>\n {/if}\n <button\n type=\"button\"\n class=\"btn btn-ghost btn-xs\"\n aria-label={t(\"domains.release\", { domain: held.domain })}\n disabled={busy}\n onclick={() => release(held)}\n >×</button>\n </div>\n\n {#if !held.verifiedAt || held.missingSince}\n <p class=\"hint w-full\">\n {t(\"domains.record\")}\n <code class=\"font-mono text-xs break-all\">{held.recordName}</code>\n <code class=\"font-mono text-xs break-all\">{held.recordValue}</code>\n </p>\n {/if}\n </li>\n {/each}\n </ul>\n {/if}\n\n <form\n class=\"join\"\n onsubmit={(event) => {\n event.preventDefault();\n claim();\n }}\n >\n <input\n class=\"input input-sm join-item w-full max-w-60 font-mono\"\n aria-label={t(\"domains.new\")}\n placeholder=\"acme.example\"\n autocapitalize=\"none\"\n spellcheck=\"false\"\n bind:value={domain}\n />\n <button type=\"submit\" class=\"btn btn-sm join-item\" disabled={busy || !domain.trim()}>{t(\"domains.add\")}</button>\n </form>\n\n {#if proven.length || data.tenant.customHost}\n <form\n class=\"flex flex-wrap items-center gap-2\"\n onsubmit={(event) => {\n event.preventDefault();\n serve(host.trim());\n }}\n >\n <span class=\"text-sm\">{t(\"domains.serve\")}</span>\n <input\n class=\"input input-sm w-full max-w-60 font-mono\"\n aria-label={t(\"domains.serve\")}\n placeholder=\"login.{proven[0]?.domain ?? 'acme.example'}\"\n autocapitalize=\"none\"\n spellcheck=\"false\"\n bind:value={host}\n />\n <button type=\"submit\" class=\"btn btn-sm\" disabled={busy || !host.trim() || host.trim() === data.tenant.customHost}>\n {t(\"domains.save\")}\n </button>\n {#if data.tenant.customHost}\n <button type=\"button\" class=\"btn btn-ghost btn-sm\" disabled={busy} onclick={() => serve(null)}>{t(\"domains.stop\")}</button>\n {/if}\n </form>\n {/if}\n {/if}\n</Section>\n","<script>\n import { t } from \"./lib/copy.js\";\n import { createFeedback } from \"./lib/feedback.svelte.js\";\n import { since } from \"./lib/format.js\";\n import Notices from \"./ui/Notices.svelte\";\n import Section from \"./ui/Section.svelte\";\n import Select from \"./ui/Select.svelte\";\n\n let { api } = $props();\n\n const feedback = createFeedback();\n\n const SOURCES = [\"manual\", \"rule\", \"provider\", \"group\"];\n const KINDS = [\"email_domain\", \"profile\"];\n const FIELDS = [\"name\", \"given_name\", \"family_name\", \"middle_name\", \"nickname\", \"gender\", \"zoneinfo\", \"locale\"];\n\n const GROUPS = `query Groups {\n groups { key name memberCount source rule { kind field value } providerKey upstreamGroup parentLabels refreshedAt }\n providers { key name }\n }`;\n\n let groups = $state([]);\n let providers = $state([]);\n let name = $state(\"\");\n let editing = $state(null);\n let draft = $state(null);\n let busy = $state(false);\n\n const key = $derived(\n name\n .trim()\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\"),\n );\n\n const sourceOptions = SOURCES.map((source) => [source, t(`group_sources.sources.${source}`)]);\n const kindOptions = KINDS.map((kind) => [kind, t(`group_sources.kinds.${kind}`)]);\n const fieldOptions = FIELDS.map((field) => [field, t(`actor.fields.${field}`)]);\n const providerOptions = $derived([[\"\", t(\"group_sources.choose_provider\")], ...providers.map((held) => [held.key, held.name])]);\n\n async function load() {\n const answer = await feedback.attempt(() => api.query(GROUPS));\n\n if (!answer) return;\n\n groups = answer.groups;\n providers = answer.providers;\n }\n\n load();\n\n async function create() {\n if (!key) return;\n\n const label = name.trim();\n const done = await feedback.attempt(\n () =>\n api.query(`mutation Create($key: String!, $name: String!) { createGroup(key: $key, name: $name) { group { key } } }`, {\n key,\n name: label,\n }),\n t(\"groups.added\", { name: label }),\n );\n\n if (!done) return;\n\n name = \"\";\n await load();\n }\n\n async function remove(group) {\n if (!confirm(t(\"groups.delete_confirm\", { name: group.name }))) return;\n\n const done = await feedback.attempt(\n () => api.query(`mutation Delete($key: String!) { deleteGroup(key: $key) { key } }`, { key: group.key }),\n t(\"groups.deleted\", { name: group.name }),\n );\n\n if (done) await load();\n }\n\n function edit(group) {\n editing = group.key;\n draft = {\n source: group.source,\n rule: group.rule.length ? group.rule.map((held) => ({ ...held })) : [condition()],\n providerKey: group.providerKey ?? \"\",\n upstreamGroup: group.upstreamGroup ?? \"\",\n parents: group.parentLabels.join(\", \"),\n };\n }\n\n function condition() {\n return { kind: \"email_domain\", field: \"name\", value: \"\" };\n }\n\n function close() {\n editing = null;\n draft = null;\n }\n\n async function save(group) {\n busy = true;\n\n const variables = {\n key: group.key,\n source: draft.source,\n rule: draft.source === \"rule\" ? draft.rule.map(({ kind, field, value }) => ({ kind, field: kind === \"profile\" ? field : null, value })) : [],\n providerKey: draft.source === \"provider\" ? draft.providerKey : \"\",\n upstreamGroup: draft.source === \"provider\" ? draft.upstreamGroup : \"\",\n parentLabels: draft.source === \"group\" ? draft.parents.split(/[\\s,]+/).filter(Boolean) : [],\n };\n\n const done = await feedback.attempt(\n () =>\n api.query(\n `mutation Fill($key: String!, $source: String!, $rule: [GroupConditionInput!]!, $providerKey: String!, $upstreamGroup: String!, $parentLabels: [String!]!) {\n updateGroup(key: $key, source: $source, rule: $rule, providerKey: $providerKey, upstreamGroup: $upstreamGroup, parentLabels: $parentLabels) { group { key } }\n }`,\n variables,\n ),\n t(\"group_sources.saved\", { name: group.name, source: t(`group_sources.sources.${draft.source}`).toLowerCase() }),\n );\n\n busy = false;\n\n if (!done) return;\n\n close();\n await load();\n }\n\n async function refresh(group) {\n busy = true;\n\n const done = await feedback.attempt(\n () => api.query(`mutation Refresh($key: String!) { refreshGroup(key: $key) { group { key } } }`, { key: group.key }),\n t(\"group_sources.refreshed\", { name: group.name }),\n );\n\n busy = false;\n\n if (done) await load();\n }\n\n function summary(group) {\n if (group.source === \"provider\") {\n const provider = providers.find((held) => held.key === group.providerKey);\n\n return t(\"group_sources.summary.provider\", { provider: provider?.name ?? group.providerKey ?? \"\" });\n }\n\n if (group.source === \"group\") return t(\"group_sources.summary.group\", { parents: group.parentLabels.join(\", \") });\n\n return t(\"group_sources.summary.rule\");\n }\n</script>\n\n<Section row title={t(\"groups.title\")} help={t(\"groups.lede\")}>\n <Notices feedback={feedback.state} />\n\n {#if groups.length}\n <ul class=\"compact-list\">\n {#each groups as group (group.key)}\n <li class=\"flex-wrap\">\n <span class=\"min-w-0 truncate text-sm font-medium\">{group.name}</span>\n <code class=\"hint font-mono\">{group.key}</code>\n <span class=\"hint\">{t(\"groups.actors\", { count: group.memberCount })}</span>\n {#if group.source !== \"manual\"}\n <span class=\"badge badge-ghost badge-sm\">{summary(group)}</span>\n {/if}\n <span class=\"ml-auto flex items-center gap-1\">\n {#if group.source !== \"manual\"}\n <button type=\"button\" class=\"btn btn-ghost btn-xs\" disabled={busy} onclick={() => refresh(group)}>\n {t(\"group_sources.refresh\")}\n </button>\n {/if}\n <button\n type=\"button\"\n class=\"btn btn-ghost btn-xs\"\n aria-label={t(\"group_sources.change\", { name: group.name })}\n onclick={() => (editing === group.key ? close() : edit(group))}\n >{t(\"group_sources.source\")}</button>\n <button\n type=\"button\"\n class=\"btn btn-ghost btn-xs\"\n aria-label={t(\"groups.delete\", { name: group.name })}\n onclick={() => remove(group)}\n >×</button>\n </span>\n\n {#if editing === group.key && draft}\n <form\n class=\"flex w-full flex-col gap-3 py-2\"\n onsubmit={(event) => {\n event.preventDefault();\n save(group);\n }}\n >\n <Select\n label={t(\"group_sources.source\")}\n value={draft.source}\n options={sourceOptions}\n disabled={busy}\n onchange={(source) => (draft.source = source)}\n />\n <p class=\"hint\">{t(`group_sources.ledes.${draft.source}`)}</p>\n\n {#if draft.source === \"rule\"}\n {#each draft.rule as held, index (index)}\n <div class=\"flex flex-wrap items-end gap-2\">\n <Select\n name={t(\"group_sources.kinds.email_domain\")}\n value={held.kind}\n options={kindOptions}\n disabled={busy}\n onchange={(kind) => (held.kind = kind)}\n />\n {#if held.kind === \"profile\"}\n <Select\n name={t(\"group_sources.field\")}\n value={held.field ?? \"name\"}\n options={fieldOptions}\n disabled={busy}\n onchange={(field) => (held.field = field)}\n />\n {/if}\n <input\n class=\"input input-sm w-full max-w-60\"\n aria-label={t(\"group_sources.value\")}\n placeholder={held.kind === \"email_domain\" ? \"example.com\" : t(\"group_sources.value\")}\n bind:value={held.value}\n disabled={busy}\n />\n {#if draft.rule.length > 1}\n <button\n type=\"button\"\n class=\"btn btn-ghost btn-xs\"\n aria-label={t(\"group_sources.remove_condition\")}\n disabled={busy}\n onclick={() => draft.rule.splice(index, 1)}\n >×</button>\n {/if}\n </div>\n {/each}\n {#if draft.rule.length < 5}\n <button type=\"button\" class=\"btn btn-ghost btn-xs w-fit\" disabled={busy} onclick={() => draft.rule.push(condition())}>\n {t(\"group_sources.add_condition\")}\n </button>\n {/if}\n {:else if draft.source === \"provider\"}\n {#if providers.length}\n <Select\n label={t(\"group_sources.provider\")}\n value={draft.providerKey}\n options={providerOptions}\n disabled={busy}\n onchange={(held) => (draft.providerKey = held)}\n />\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"group_sources.upstream_group\")}</span>\n <input class=\"input input-sm w-full max-w-60\" bind:value={draft.upstreamGroup} disabled={busy} />\n </label>\n {:else}\n <p class=\"hint\">{t(\"group_sources.no_providers\")}</p>\n {/if}\n {:else if draft.source === \"group\"}\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"group_sources.parent_labels\")}</span>\n <input class=\"input input-sm w-full max-w-100\" bind:value={draft.parents} disabled={busy} />\n <span class=\"hint\">{t(\"group_sources.parent_labels_hint\")}</span>\n </label>\n {/if}\n\n <div class=\"flex items-center gap-2\">\n <button type=\"submit\" class=\"btn btn-sm\" disabled={busy}>{t(\"group_sources.save\")}</button>\n <button type=\"button\" class=\"btn btn-ghost btn-sm\" disabled={busy} onclick={close}>{t(\"group_sources.cancel\")}</button>\n {#if group.source !== \"manual\"}\n <span class=\"hint\">\n {group.refreshedAt ? t(\"group_sources.refreshed_at\", { when: since(group.refreshedAt) }) : t(\"group_sources.never_refreshed\")}\n </span>\n {/if}\n </div>\n </form>\n {/if}\n </li>\n {/each}\n </ul>\n {/if}\n\n <form\n class=\"join\"\n onsubmit={(event) => {\n event.preventDefault();\n create();\n }}\n >\n <input class=\"input input-sm join-item w-full max-w-60\" aria-label={t(\"groups.new\")} placeholder={t(\"groups.new\")} bind:value={name} />\n <button type=\"submit\" class=\"btn btn-sm join-item\" disabled={!key}>{t(\"groups.add\")}</button>\n </form>\n\n {#if key}\n <p class=\"hint\">{t(\"groups.key\", { key })}</p>\n {/if}\n</Section>\n","<script>\n import { createFeedback } from \"./lib/feedback.svelte.js\";\n import { t } from \"./lib/copy.js\";\n import { day } from \"./lib/format.js\";\n import DomainsSection from \"./DomainsSection.svelte\";\n import GroupsSection from \"./GroupsSection.svelte\";\n import Namespaces from \"./Namespaces.svelte\";\n import ScopesEditor from \"./ScopesEditor.svelte\";\n import Section from \"./ui/Section.svelte\";\n import Select from \"./ui/Select.svelte\";\n import Facts from \"./ui/Facts.svelte\";\n import Field from \"./ui/Field.svelte\";\n import Link from \"./ui/Link.svelte\";\n import Notices from \"./ui/Notices.svelte\";\n import Page from \"./ui/Page.svelte\";\n import Spinner from \"./ui/Spinner.svelte\";\n\n let { api, boot } = $props();\n\n const QUERY = `\n query Tenant {\n tenant {\n uuid subdomain name dynamicRegistration dynamicClientScopes createdAt mails accentColor logoUrl keyRotationDays\n eventRetentionDays invitationLifetime organizationInvitationLifetime passwordResetLifetime emailVerificationLifetime\n signingKeys { kid algorithm activatedAt retiredAt state }\n }\n viewer { identifier scopes }\n namespaces {\n name resource claimedAt releasable\n client { clientId name }\n }\n scopesSupported\n }\n `;\n\n const RETENTION = [\n [30, t(\"settings.retention.days_30\")],\n [90, t(\"settings.retention.days_90\")],\n [180, t(\"settings.retention.days_180\")],\n [365, t(\"settings.retention.a_year\")],\n [1095, t(\"settings.retention.three_years\")],\n [2555, t(\"settings.retention.seven_years\")],\n ];\n\n const MINUTE = 60;\n const HOUR = 60 * MINUTE;\n const DAY = 24 * HOUR;\n\n const LINKS = [\n [\"invitationLifetime\", \"invitation\", 7 * DAY, [DAY, 3 * DAY, 7 * DAY, 14 * DAY, 30 * DAY]],\n [\"organizationInvitationLifetime\", \"organization_invitation\", 14 * DAY, [DAY, 3 * DAY, 7 * DAY, 14 * DAY, 30 * DAY]],\n [\"passwordResetLifetime\", \"password_reset\", 30 * MINUTE, [15 * MINUTE, 30 * MINUTE, HOUR, 4 * HOUR, DAY]],\n [\"emailVerificationLifetime\", \"email_verification\", 2 * DAY, [HOUR, DAY, 2 * DAY, 7 * DAY, 14 * DAY]],\n ];\n\n function lasting(seconds) {\n if (seconds % DAY === 0) return t(\"links.days\", { count: seconds / DAY });\n if (seconds % HOUR === 0) return t(\"links.hours\", { count: seconds / HOUR });\n\n return t(\"links.minutes\", { count: Math.round(seconds / MINUTE) });\n }\n\n const lifetimes = (presets, usual, held) =>\n (presets.includes(held) ? presets : [...presets, held].sort((a, b) => a - b)).map((seconds) => [\n String(seconds),\n seconds === usual ? t(\"links.default\", { length: lasting(seconds) }) : lasting(seconds),\n ]);\n\n const choices = (listed, held) =>\n !held || listed.some(([days]) => days === held) ? listed : [...listed, [held, t(\"settings.after_days\", { days: held })]];\n\n const BADGE = {\n staged: \"badge-warning\",\n active: \"badge-success\",\n retiring: \"badge-info\",\n retired: \"badge-ghost\",\n };\n\n const feedback = createFeedback();\n\n let data = $state(null);\n let name = $state(\"\");\n let loading = $state(true);\n\n async function load() {\n loading = true;\n\n try {\n data = await api.query(QUERY);\n name = data.tenant.name;\n } catch (thrown) {\n feedback.blame(thrown);\n } finally {\n loading = false;\n }\n }\n\n load();\n\n async function update(changes, notice) {\n const done = await feedback.attempt(\n () =>\n api.query(\n `mutation Update(\n $name: String, $dynamicClientScopes: [String!], $dynamicRegistration: String,\n $eventRetentionDays: Int, $accentColor: String, $keyRotationDays: Int,\n $invitationLifetime: Int, $organizationInvitationLifetime: Int, $passwordResetLifetime: Int, $emailVerificationLifetime: Int\n ) {\n updateTenant(\n name: $name\n dynamicClientScopes: $dynamicClientScopes\n dynamicRegistration: $dynamicRegistration\n eventRetentionDays: $eventRetentionDays\n accentColor: $accentColor\n keyRotationDays: $keyRotationDays\n invitationLifetime: $invitationLifetime\n organizationInvitationLifetime: $organizationInvitationLifetime\n passwordResetLifetime: $passwordResetLifetime\n emailVerificationLifetime: $emailVerificationLifetime\n ) { tenant { name } }\n }`,\n changes,\n ),\n notice,\n );\n\n if (done) await load();\n }\n\n async function chooseLogo(event) {\n const input = event.currentTarget;\n const file = input.files?.[0];\n\n if (!file) return;\n\n await keys(\n `mutation Logo($logo: Upload!) { uploadTenantLogo(logo: $logo) { tenant { logoUrl } } }`,\n { logo: file },\n t(\"settings.branding.logo_updated\"),\n );\n\n input.value = \"\";\n }\n\n async function keys(query, variables, notice) {\n const done = await feedback.attempt(() => api.query(query, variables), notice);\n\n if (done) await load();\n }\n\n const stage = () =>\n keys(\n `mutation Stage { stageSigningKey { signingKey { kid } } }`,\n {},\n t(\"settings.keys.staged_notice\"),\n );\n\n function activate(kid) {\n if (!confirm(t(\"settings.keys.activate_confirm\"))) return;\n\n return keys(\n `mutation Activate($kid: ID!) { activateSigningKey(kid: $kid) { signingKey { kid } } }`,\n { kid },\n t(\"settings.keys.activated_notice\"),\n );\n }\n\n function discard(kid) {\n if (!confirm(t(\"settings.keys.discard_confirm\"))) return;\n\n return keys(\n `mutation Discard($kid: ID!) { discardSigningKey(kid: $kid) { kid } }`,\n { kid },\n t(\"settings.keys.discarded\"),\n );\n }\n\n function rotate() {\n if (!confirm(t(\"settings.keys.rotate_confirm\"))) return;\n\n return keys(\n `mutation Rotate { rotateSigningKey { signingKey { kid } } }`,\n {},\n t(\"settings.keys.rotated\"),\n );\n }\n</script>\n\n{#if loading && !data}\n <Spinner />\n{:else if !data}\n <div class=\"alert alert-error alert-soft text-sm\" role=\"alert\">{feedback.state.failure}</div>\n{:else}\n <Page title={t(\"settings.title\")}>\n <Notices feedback={feedback.state} />\n\n <div class=\"grid gap-4\">\n <Section\n row\n title={t(\"settings.tenant.title\")}\n help={t(\"settings.tenant.help\")}\n >\n <Field label={t(\"settings.tenant.name\")} bind:value={name} onsave={() => update({ name }, t(\"settings.tenant.renamed\"))} />\n\n <Facts\n rows={[\n { term: t(\"settings.tenant.subdomain\"), value: data.tenant.subdomain, mono: true },\n { term: t(\"settings.tenant.issuer\"), value: boot.issuer, mono: true },\n { term: t(\"settings.tenant.resource\"), value: boot.resource, mono: true },\n { term: t(\"settings.tenant.since\"), value: day(data.tenant.createdAt) },\n ]}\n />\n </Section>\n\n <Section\n row\n title={t(\"settings.branding.title\")}\n help={t(\"settings.branding.help\")}\n >\n <div class=\"flex flex-wrap items-center gap-3\">\n {#if data.tenant.logoUrl}\n <img src={data.tenant.logoUrl} alt=\"\" width=\"48\" height=\"48\" class=\"rounded-lg\" />\n {/if}\n\n <label class=\"btn btn-sm\">\n {data.tenant.logoUrl ? t(\"settings.branding.change_logo\") : t(\"settings.branding.upload_logo\")}\n <input type=\"file\" class=\"hidden\" accept=\"image/png,image/jpeg,image/webp,image/gif\" onchange={chooseLogo} />\n </label>\n\n {#if data.tenant.logoUrl}\n <button\n type=\"button\"\n class=\"btn btn-ghost btn-sm\"\n onclick={() => keys(`mutation { removeTenantLogo { tenant { logoUrl } } }`, {}, t(\"settings.branding.logo_removed\"))}\n >\n {t(\"settings.branding.remove\")}\n </button>\n {/if}\n </div>\n\n <div class=\"flex flex-wrap items-center gap-3\">\n <label class=\"flex items-center gap-2 text-sm\">\n <input\n type=\"color\"\n value={data.tenant.accentColor ?? \"#b3380f\"}\n onchange={(event) => update({ accentColor: event.currentTarget.value }, t(\"settings.branding.color_updated\"))}\n />\n {t(\"settings.branding.accent\")}\n </label>\n\n {#if data.tenant.accentColor}\n <button type=\"button\" class=\"btn btn-ghost btn-sm\" onclick={() => update({ accentColor: \"\" }, t(\"settings.branding.color_reset\"))}>\n {t(\"settings.branding.own\")}\n </button>\n {/if}\n </div>\n </Section>\n\n <Section\n row\n title={t(\"settings.retention.title\")}\n help={t(\"settings.retention.help\")}\n >\n <Select\n value={data.tenant.eventRetentionDays}\n options={choices(RETENTION, data.tenant.eventRetentionDays)}\n onchange={(days) => update({ eventRetentionDays: Number(days) }, t(\"settings.retention.updated\"))}\n />\n </Section>\n\n <Section row title={t(\"links.title\")} help={t(\"links.help\")}>\n <div class=\"grid gap-3 sm:grid-cols-2\">\n {#each LINKS as [field, key, usual, presets] (field)}\n <Select\n label={t(`links.${key}`)}\n value={String(data.tenant[field])}\n options={lifetimes(presets, usual, data.tenant[field])}\n onchange={(seconds) => update({ [field]: Number(seconds) }, t(\"links.updated\"))}\n />\n {/each}\n </div>\n </Section>\n\n <Section\n row\n title={t(\"settings.registration.title\")}\n help={t(\"settings.registration.help\")}\n >\n <Select\n value={data.tenant.dynamicRegistration}\n options={[\n [\"off\", t(\"settings.registration.off\")],\n [\"anything\", t(\"settings.registration.on\")],\n [\"bounded\", t(\"settings.registration.bounded\")],\n ]}\n onchange={(dynamicRegistration) =>\n update({ dynamicRegistration }, t(\"settings.registration.updated\"))}\n />\n\n {#if data.tenant.dynamicRegistration === \"bounded\"}\n <ScopesEditor\n value={data.tenant.dynamicClientScopes ?? []}\n available={data.scopesSupported}\n onchange={(dynamicClientScopes) => update({ dynamicClientScopes }, t(\"settings.registration.ceiling_updated\"))}\n />\n {/if}\n </Section>\n\n {#if data.namespaces.length}\n <Namespaces {api} rows={data.namespaces} onreleased={load} showClient row />\n {/if}\n\n <Section row title={t(\"settings.keys.title\")} help={t(\"settings.keys.help\")}>\n <ul class=\"compact-list\">\n {#each data.tenant.signingKeys as key (key.kid)}\n <li class=\"flex-wrap\">\n <code class=\"font-mono text-sm\">{key.kid.slice(0, 8)}</code>\n <span class=\"badge badge-sm {BADGE[key.state]}\">{BADGE[key.state] ? t(`settings.keys.states.${key.state}`) : key.state}</span>\n <span class=\"hint text-xs\">\n {key.algorithm} ·\n {#if key.state === \"retiring\"}\n {t(\"settings.keys.until\", { day: day(key.retiredAt) })}\n {:else}\n {day(key.activatedAt, t(\"settings.keys.not_yet\"))}\n {/if}\n </span>\n\n {#if key.state === \"staged\"}\n <div class=\"ml-auto flex gap-1\">\n <button type=\"button\" class=\"btn btn-xs\" onclick={() => activate(key.kid)}>{t(\"settings.keys.activate\")}</button>\n <button type=\"button\" class=\"btn btn-xs btn-ghost\" onclick={() => discard(key.kid)}>{t(\"settings.keys.discard\")}</button>\n </div>\n {/if}\n </li>\n {/each}\n </ul>\n\n <div class=\"flex flex-wrap items-center gap-2\">\n <Select\n name={t(\"settings.keys.schedule\")}\n value={String(data.tenant.keyRotationDays ?? 0)}\n options={[0, 30, 90, 180, 365].map((days) => [\n String(days),\n days ? t(\"settings.keys.every\", { count: days }) : t(\"settings.keys.by_hand\"),\n ])}\n onchange={(days) => update({ keyRotationDays: Number(days) }, t(\"settings.keys.scheduled\"))}\n />\n <button type=\"button\" class=\"btn btn-sm\" onclick={stage}>{t(\"settings.keys.stage\")}</button>\n <button type=\"button\" class=\"btn btn-sm btn-ghost\" onclick={rotate}>{t(\"settings.keys.rotate\")}</button>\n </div>\n </Section>\n\n <GroupsSection {api} />\n\n <DomainsSection {api} />\n </div>\n </Page>\n{/if}\n","<script>\n import { t } from \"../lib/copy.js\";\n let { points, label } = $props();\n\n const W = 720;\n const H = 168;\n const FOOT = 22;\n const PLOT = H - FOOT;\n const GAP = 2;\n const CAP = 2;\n\n const peak = $derived(Math.max(1, ...points.map((point) => point.value)));\n const step = $derived(W / Math.max(points.length, 1));\n const width = $derived(Math.max(step - GAP, 1));\n const total = $derived(points.reduce((sum, point) => sum + point.value, 0));\n\n let hovered = $state(null);\n\n function share(index) {\n return ((index + 0.5) / Math.max(points.length, 1)) * 100;\n }\n\n function bar(value, x) {\n const height = value === 0 ? 2 : Math.max((value / peak) * (PLOT - 8), 3);\n const y = PLOT - height;\n const radius = Math.min(CAP, width / 2, height);\n\n return [\n `M ${x} ${PLOT}`,\n `L ${x} ${y + radius}`,\n `Q ${x} ${y} ${x + radius} ${y}`,\n `L ${x + width - radius} ${y}`,\n `Q ${x + width} ${y} ${x + width} ${y + radius}`,\n `L ${x + width} ${PLOT}`,\n \"Z\",\n ].join(\" \");\n }\n\n const ticks = $derived(\n points.length\n ? [0, Math.floor((points.length - 1) / 2), points.length - 1]\n .filter((at, index, all) => all.indexOf(at) === index)\n .map((at) => ({ at, point: points[at] }))\n : [],\n );\n</script>\n\n<figure class=\"chart\">\n <figcaption class=\"chart-head\">\n <span class=\"sr-only\">{label}</span>\n <span class=\"chart-peak\">{t(\"ui.bar_chart.peak\", { peak })}</span>\n </figcaption>\n\n <div class=\"chart-plot tray\">\n <svg\n viewBox=\"0 0 {W} {H}\"\n class=\"chart-svg\"\n role=\"img\"\n aria-label={t(\"ui.bar_chart.summary\", { label, total, days: points.length, peak })}\n >\n <line class=\"chart-base\" x1=\"0\" y1={PLOT} x2={W} y2={PLOT} />\n\n {#each points as point, index (point.key)}\n <path\n class=\"chart-bar\"\n class:chart-bar-idle={point.value === 0}\n class:chart-bar-on={hovered?.index === index}\n d={bar(point.value, index * step)}\n />\n {/each}\n\n {#each points as point, index (point.key)}\n <rect\n class=\"chart-hit\"\n x={index * step}\n y=\"0\"\n width={step}\n height={PLOT}\n onmouseenter={() => (hovered = { ...point, index })}\n onmouseleave={() => (hovered = null)}\n onfocus={() => (hovered = { ...point, index })}\n onblur={() => (hovered = null)}\n tabindex=\"-1\"\n role=\"presentation\"\n />\n {/each}\n </svg>\n\n {#if hovered}\n <div\n class=\"chart-tip\"\n style=\"--at: {share(hovered.index)}%\"\n aria-hidden=\"true\"\n >\n <strong>{hovered.value}</strong>\n {t(\"ui.bar_chart.unit\", { count: hovered.value })}\n <span>{hovered.label}</span>\n </div>\n {/if}\n </div>\n\n <div class=\"chart-axis\">\n {#each ticks as tick (tick.at)}\n <span style=\"--at: {share(tick.at)}%\">{tick.point.label}</span>\n {/each}\n </div>\n\n <table class=\"sr-only\">\n <caption>{label}</caption>\n <thead><tr><th>{t(\"ui.bar_chart.day\")}</th><th>{t(\"ui.bar_chart.units\")}</th></tr></thead>\n <tbody>\n {#each points as point (point.key)}\n <tr><td>{point.label}</td><td>{point.value}</td></tr>\n {/each}\n </tbody>\n </table>\n</figure>\n","<script>\n import { t } from \"../lib/copy.js\";\n import Spinner from \"./Spinner.svelte\";\n\n let { load, children } = $props();\n\n let state = $state({ loading: true, failure: null, data: null });\n\n async function run() {\n state.loading = true;\n state.failure = null;\n\n try {\n state.data = await load();\n } catch (thrown) {\n state.failure = thrown.message;\n } finally {\n state.loading = false;\n }\n }\n\n run();\n</script>\n\n{#if state.loading}\n <Spinner />\n{:else if state.failure}\n <div class=\"alert alert-error alert-soft text-sm\" role=\"alert\">\n <span>{state.failure}</span>\n <button type=\"button\" class=\"btn btn-sm\" onclick={run}>{t(\"ui.retry\")}</button>\n </div>\n{:else}\n {@render children(state.data, run)}\n{/if}\n","<script>\n import { t } from \"./lib/copy.js\";\n import { moment, since } from \"./lib/format.js\";\n import Events from \"./Events.svelte\";\n import OrganizationCell from \"./OrganizationCell.svelte\";\n import OrganizationHeadcount from \"./OrganizationHeadcount.svelte\";\n import BarChart from \"./ui/BarChart.svelte\";\n import Link from \"./ui/Link.svelte\";\n import Loader from \"./ui/Loader.svelte\";\n import Page from \"./ui/Page.svelte\";\n import Row from \"./ui/Row.svelte\";\n import Section from \"./ui/Section.svelte\";\n import Spinner from \"./ui/Spinner.svelte\";\n import Table from \"./ui/Table.svelte\";\n import Tally from \"./ui/Tally.svelte\";\n\n let { api, boot } = $props();\n\n const ORGANIZATIONS_SHOWN = 5;\n\n const QUERY = `\n query Overview($since: ISO8601DateTime!) {\n tenant { name mails }\n tally { actors clients devices organizations }\n waiting: actorCount(pendingApproval: true)\n help: actorCount(recoveryRequested: true)\n worrying: eventCount(grave: true, since: $since)\n gravest: events(grave: true, since: $since, limit: 1) { id label createdAt }\n latest: events(limit: 40) {\n id action label createdAt ipAddress details\n actor { uuid identifier }\n by { uuid identifier }\n client { clientId name }\n device { id label }\n }\n organizations(limit: ${ORGANIZATIONS_SHOWN}) { key name memberCount ownerCount pendingCount }\n health { name status summary details checkedAt changedAt }\n release { version url operatorStep }\n }\n `;\n\n const RUN_CHECKS = `\n mutation RunHealthChecks {\n runHealthChecks { health { name status summary details checkedAt changedAt } }\n }\n `;\n\n const TONES = { ok: \"good\", warning: \"warn\", failing: \"bad\" };\n\n const ACTIVITY = `\n query Activity($days: Int) {\n activity(days: $days) { date signIns }\n }\n `;\n\n const SPANS = [7, 30, 90];\n const DAY = 24 * 60 * 60 * 1000;\n const MARK = new Intl.DateTimeFormat(undefined, { day: \"numeric\", month: \"short\" });\n const SKIPPED = \"masks:manage:skipped\";\n\n let data = $state(null);\n let failure = $state(null);\n let days = $state(30);\n let skipped = $state([]);\n let checking = $state(false);\n let checkFailure = $state(null);\n\n try {\n skipped = JSON.parse(localStorage.getItem(SKIPPED) ?? \"[]\");\n } catch {}\n\n function skip(key) {\n skipped = [...skipped, key];\n\n try {\n localStorage.setItem(SKIPPED, JSON.stringify(skipped));\n } catch {}\n }\n\n const counts = $derived(\n data\n ? [\n { to: \"/actors\", label: t(\"settings.counts.actors\"), value: data.tally.actors },\n { to: \"/clients\", label: t(\"settings.counts.clients\"), value: data.tally.clients },\n { to: \"/organizations\", label: t(\"settings.counts.organizations\"), value: data.tally.organizations },\n { to: \"/actors#devices\", label: t(\"settings.counts.devices\"), value: data.tally.devices },\n ]\n : [],\n );\n\n const needs = $derived(\n data\n ? [\n data.waiting && {\n key: \"waiting\",\n tone: \"warn\",\n title: t(\"settings.needs.waiting\", { count: data.waiting }),\n to: \"/actors?lens=waiting\",\n },\n data.help && {\n key: \"help\",\n tone: \"warn\",\n title: t(\"settings.needs.help\", { count: data.help }),\n to: \"/actors?lens=help\",\n },\n data.worrying && {\n key: \"worrying\",\n tone: \"bad\",\n title: t(\"settings.needs.worrying\", { count: data.worrying }),\n detail: t(\"settings.needs.latest\", { label: data.gravest[0].label, when: since(data.gravest[0].createdAt) }),\n to: \"/activity?grave=1\",\n },\n ].filter(Boolean)\n : [],\n );\n\n const starting = $derived(\n data\n ? [\n !data.tenant.mails && {\n key: \"mail\",\n title: t(\"settings.starting.mail.title\"),\n detail: t(\"settings.starting.mail.detail\"),\n to: \"/messages\",\n action: t(\"settings.starting.mail.action\"),\n },\n data.tally.clients === 0 && {\n key: \"client\",\n title: t(\"settings.starting.client.title\"),\n detail: t(\"settings.starting.client.detail\"),\n to: \"/clients\",\n action: t(\"settings.starting.client.action\"),\n },\n data.tally.actors <= 1 && {\n key: \"invite\",\n title: t(\"settings.starting.invite.title\"),\n detail: t(\"settings.starting.invite.detail\"),\n to: \"/actors\",\n action: t(\"settings.starting.invite.action\"),\n },\n ].filter((step) => step && !skipped.includes(step.key))\n : [],\n );\n\n const plotted = (rows) =>\n rows.map((row) => ({\n key: row.date,\n value: row.signIns,\n label: MARK.format(new Date(`${row.date}T00:00:00`)),\n }));\n\n const checkedAt = $derived(data?.health.length ? data.health.map((check) => check.checkedAt).sort().at(-1) : null);\n\n function sentence(check) {\n const details = check.details ?? {};\n const values = {\n ...details,\n jobs: Array.isArray(details.jobs) ? details.jobs.join(\", \") : details.jobs,\n domains: Array.isArray(details.domains) ? details.domains.join(\", \") : details.domains,\n since: details.since ? moment(details.since) : details.since,\n };\n\n return t(`health.checks.${check.name}.${check.summary}`, values);\n }\n\n async function runChecks() {\n checking = true;\n checkFailure = null;\n\n try {\n const answer = await api.query(RUN_CHECKS);\n data = { ...data, health: answer.runHealthChecks.health };\n } catch (thrown) {\n checkFailure = thrown.message;\n } finally {\n checking = false;\n }\n }\n\n async function load() {\n try {\n data = await api.query(QUERY, { since: new Date(Date.now() - DAY).toISOString() });\n } catch (thrown) {\n failure = thrown.message;\n }\n }\n\n load();\n</script>\n\n{#if !data && !failure}\n <Spinner />\n{:else if !data}\n <div class=\"alert alert-error alert-soft text-sm\" role=\"alert\">{failure}</div>\n{:else}\n <Page title={data.tenant.name} id={boot.issuer} hero>\n {#if needs.length || starting.length || data.release}\n <div class=\"flex flex-col gap-2\">\n {#if data.release}\n <div class=\"callout callout-info\" role=\"status\">\n <div class=\"callout-words\">\n <strong>{t(\"health.release.available\", { version: data.release.version })}</strong>\n {#if data.release.operatorStep}<span class=\"hint\">{t(\"health.release.operator\")}</span>{/if}\n </div>\n <div class=\"callout-actions\">\n <a class=\"btn btn-sm\" href={data.release.url} target=\"_blank\" rel=\"noreferrer noopener\">{t(\"health.release.notes\")}</a>\n </div>\n </div>\n {/if}\n\n {#each needs as need (need.key)}\n <div class=\"callout callout-{need.tone}\" role=\"status\">\n <div class=\"callout-words\">\n <strong>{need.title}</strong>\n {#if need.detail}<span class=\"hint\">{need.detail}</span>{/if}\n </div>\n <div class=\"callout-actions\">\n <Link to={need.to} class=\"btn btn-sm\">{t(\"settings.needs.review\")}</Link>\n </div>\n </div>\n {/each}\n\n {#each starting as step (step.key)}\n <div class=\"callout callout-quiet\">\n <div class=\"callout-words\">\n <strong>{step.title}</strong>\n <span class=\"hint\">{step.detail}</span>\n </div>\n <div class=\"callout-actions\">\n <Link to={step.to} class=\"btn btn-sm\">{step.action}</Link>\n <button type=\"button\" class=\"btn btn-ghost btn-sm\" onclick={() => skip(step.key)}>\n {t(\"settings.starting.hide\")}\n </button>\n </div>\n </div>\n {/each}\n </div>\n {/if}\n\n <Tally {counts} />\n\n <div class=\"dash\">\n <div class=\"dash-main\">\n <Section title={t(\"settings.sign_ins.title\")}>\n {#snippet actions()}\n <div class=\"range\" role=\"group\" aria-label={t(\"settings.sign_ins.range\")}>\n {#each SPANS as span (span)}\n <button type=\"button\" aria-pressed={days === span} onclick={() => (days = span)}>\n {t(\"settings.sign_ins.span\", { days: span })}\n </button>\n {/each}\n </div>\n {/snippet}\n\n {#key days}\n <Loader load={() => api.query(ACTIVITY, { days })}>\n {#snippet children(activity)}\n <BarChart points={plotted(activity.activity)} label={t(\"settings.sign_ins.chart\")} />\n {/snippet}\n </Loader>\n {/key}\n </Section>\n </div>\n\n <div class=\"dash-side\">\n <Section title={t(\"health.title\")} lede={t(\"health.lede\")}>\n {#snippet actions()}\n <button type=\"button\" class=\"btn btn-ghost btn-sm\" disabled={checking} onclick={runChecks}>\n {checking ? t(\"health.checking\") : t(\"health.check_now\")}\n </button>\n {/snippet}\n\n {#if checkFailure}\n <div class=\"alert alert-error alert-soft text-sm\" role=\"alert\">{t(\"health.failed\", { failure: checkFailure })}</div>\n {/if}\n\n {#if data.health.length}\n <ul class=\"compact-list\" aria-label={t(\"health.title\")}>\n {#each data.health as check (check.name)}\n <li class=\"items-start\">\n <span class=\"mark mark-{TONES[check.status]} mt-1\" role=\"img\" aria-label={t(`health.statuses.${check.status}`)} title={t(`health.statuses.${check.status}`)}>\n <svg viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\"><circle cx=\"10\" cy=\"10\" r=\"5\" /></svg>\n </span>\n <div class=\"flex min-w-0 flex-col\">\n <span class=\"text-sm font-medium\">{t(`health.checks.${check.name}.title`)}</span>\n <span class=\"text-sm\">{sentence(check)}</span>\n {#if check.status !== \"ok\"}\n <span class=\"hint text-xs\">{t(`health.checks.${check.name}.advice`, check.details ?? {})}</span>\n {/if}\n </div>\n </li>\n {/each}\n </ul>\n <p class=\"hint text-xs\">{t(\"health.checked\", { when: since(checkedAt) })}</p>\n {:else}\n <p class=\"hint\">{t(\"health.never\")}</p>\n {/if}\n </Section>\n\n <Section title={t(\"settings.organizations.title\")}>\n {#snippet actions()}\n <Link to=\"/organizations\" class=\"btn btn-ghost btn-sm\">\n {data.tally.organizations > ORGANIZATIONS_SHOWN\n ? t(\"settings.organizations.all_count\", { count: data.tally.organizations })\n : t(\"settings.organizations.all\")}\n </Link>\n {/snippet}\n\n {#if data.organizations.length}\n <Table columns={[t(\"settings.organizations.organization\"), { label: t(\"settings.organizations.members\"), right: true }]} count={data.organizations.length}>\n {#snippet rows()}\n {#each data.organizations as organization (organization.key)}\n <Row to={`/organizations/${organization.key}`}>\n <td><OrganizationCell {organization} /></td>\n <td class=\"text-right text-sm whitespace-nowrap\">\n <OrganizationHeadcount {organization} class=\"flex flex-col items-end\" />\n </td>\n </Row>\n {/each}\n {/snippet}\n </Table>\n {:else}\n <p class=\"hint\">{t(\"settings.organizations.empty\")}</p>\n {/if}\n </Section>\n </div>\n </div>\n\n <Section title={t(\"settings.recent.title\")}>\n {#snippet actions()}\n <Link to=\"/activity\" class=\"btn btn-ghost btn-sm\">{t(\"settings.recent.all\")}</Link>\n {/snippet}\n\n <Events events={data.latest} empty={t(\"settings.recent.empty\")} limit={8} collapse />\n </Section>\n </Page>\n{/if}\n","<script>\n import { t } from \"./lib/copy.js\";\n import Link from \"./ui/Link.svelte\";\n\n let { part } = $props();\n</script>\n\n<nav class=\"settings-tabs\" aria-label={t(\"activity.title\")}>\n <Link to=\"/activity\" class=\"settings-tab {part === 'log' ? 'settings-tab-on' : ''}\">{t(\"activity.parts.log\")}</Link>\n <Link to=\"/activity/streams\" class=\"settings-tab {part === 'streams' ? 'settings-tab-on' : ''}\">{t(\"activity.parts.streams\")}</Link>\n</nav>\n","<script>\n import ActivityParts from \"./ActivityParts.svelte\";\n import Tip from \"./ui/Tip.svelte\";\n import { t } from \"./lib/copy.js\";\n import { createPages } from \"./lib/pages.svelte.js\";\n import Pager from \"./ui/Pager.svelte\";\n import { untrack } from \"svelte\";\n import Events from \"./Events.svelte\";\n import { createFeedback } from \"./lib/feedback.svelte.js\";\n import { useRouter } from \"./lib/router.svelte.js\";\n import Section from \"./ui/Section.svelte\";\n import Link from \"./ui/Link.svelte\";\n import Notices from \"./ui/Notices.svelte\";\n import Page from \"./ui/Page.svelte\";\n import Spinner from \"./ui/Spinner.svelte\";\n\n let { api } = $props();\n\n const pages = createPages();\n\n const FIELDS = `\n id action label createdAt ipAddress userAgent details\n actor { uuid identifier }\n by { uuid identifier }\n client { clientId name }\n device { id label }\n `;\n\n const QUERY = `\n query Activity(\n $action: String, $grave: Boolean, $afterId: ID, $limit: Int,\n $actor: ID, $client: ID\n ) {\n events(\n action: $action, grave: $grave, afterId: $afterId, limit: $limit,\n actor: $actor, client: $client\n ) { ${FIELDS} }\n eventCount(action: $action, grave: $grave, actor: $actor, client: $client)\n eventActions { action label }\n }\n `;\n\n const ABOUT_ACTOR = `query About($uuid: ID!) { actor(uuid: $uuid) { uuid identifier } }`;\n const ABOUT_CLIENT = `query About($clientId: ID!) { client(clientId: $clientId) { clientId name } }`;\n\n const feedback = createFeedback();\n const router = useRouter();\n\n let events = $state([]);\n let actions = $state([]);\n let exporting = $state(false);\n\n const today = () => new Date().toISOString().slice(0, 10);\n const daysAgo = (days) => new Date(Date.now() - days * 86400000).toISOString().slice(0, 10);\n\n let range = $state({ from: daysAgo(30), to: today() });\n let action = $state(\"\");\n let grave = $state(router.query.get(\"grave\") === \"1\");\n let loading = $state(true);\n let about = $state(null);\n\n const actorId = $derived(router.query.get(\"actor\"));\n const clientId = $derived(router.query.get(\"client\"));\n const narrowed = $derived(Boolean(actorId || clientId));\n\n async function load() {\n loading = true;\n\n const data = await feedback.attempt(() =>\n api.query(QUERY, {\n action: action || null,\n grave,\n afterId: pages.cursor,\n limit: pages.size,\n actor: actorId,\n client: clientId,\n }),\n );\n\n loading = false;\n\n if (!data) return;\n\n actions = data.eventActions;\n events = data.events;\n pages.counted(data.eventCount);\n }\n\n function turn(direction) {\n if (direction === \"forward\") pages.forward(events.at(-1)?.id);\n else pages.back();\n\n load();\n }\n\n async function describe() {\n about = null;\n\n if (actorId) {\n const data = await api.query(ABOUT_ACTOR, { uuid: actorId }).catch(() => null);\n\n if (data?.actor) {\n about = { label: data.actor.identifier, to: `/actors/${data.actor.uuid}`, noun: t(\"activity.nouns.actor\") };\n }\n\n return;\n }\n\n if (!clientId) return;\n\n const data = await api.query(ABOUT_CLIENT, { clientId }).catch(() => null);\n\n if (data?.client) {\n about = { label: data.client.name, to: `/clients/${data.client.clientId}`, noun: t(\"activity.nouns.client\") };\n }\n }\n\n $effect(() => {\n actorId;\n clientId;\n\n untrack(() => {\n pages.reset();\n load();\n describe();\n });\n });\n\n function filter(chosen) {\n action = chosen;\n pages.reset();\n load();\n }\n\n function only(worrying) {\n grave = worrying;\n if (worrying) action = \"\";\n pages.reset();\n load();\n }\n\n async function download() {\n exporting = true;\n\n const answer = await feedback.attempt(() =>\n api.query(\n `mutation Export($from: ISO8601DateTime!, $to: ISO8601DateTime!, $action: String, $actor: ID) {\n exportEvents(from: $from, to: $to, action: $action, actor: $actor) { url count }\n }`,\n {\n from: new Date(`${range.from}T00:00:00`).toISOString(),\n to: new Date(new Date(`${range.to}T00:00:00`).getTime() + 86400000).toISOString(),\n action: action || null,\n actor: actorId || null,\n },\n ),\n );\n\n exporting = false;\n\n if (!answer) return;\n\n feedback.say(t(\"activity.downloading\", { count: answer.exportEvents.count }));\n location.assign(answer.exportEvents.url);\n }\n</script>\n\n<Page title={t(\"activity.title\")}>\n <ActivityParts part=\"log\" />\n\n <Notices feedback={feedback.state} />\n\n {#if narrowed}\n <div class=\"alert alert-info alert-soft flex-wrap items-center gap-3 text-sm\" role=\"status\">\n {#if about}\n <span>\n {t(\"activity.involves\", { noun: about.noun })}\n <Link to={about.to} class=\"link font-medium\">{about.label}</Link>{t(\"activity.involves_end\")}\n </span>\n {:else}\n <span>{t(actorId ? \"activity.gone.actor\" : \"activity.gone.client\")}</span>\n {/if}\n\n <Link to=\"/activity\" class=\"btn btn-sm\">{t(\"activity.everything\")}</Link>\n </div>\n {/if}\n\n <Section>\n <div class=\"flex flex-wrap items-end gap-4\">\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"legend\">{t(\"activity.show\")}</span>\n <select\n class=\"select select-sm w-full max-w-xs\"\n value={action}\n disabled={grave}\n onchange={(event) => filter(event.currentTarget.value)}\n >\n <option value=\"\">{t(\"activity.all\")}</option>\n {#each actions as one (one.action)}\n <option value={one.action}>{one.label}</option>\n {/each}\n </select>\n </label>\n\n <label class=\"flex items-center gap-2 pb-1 text-sm\">\n <input\n type=\"checkbox\"\n class=\"toggle toggle-sm\"\n checked={grave}\n onchange={(event) => only(event.currentTarget.checked)}\n />\n {t(\"activity.grave\")}\n </label>\n\n <div class=\"flex flex-col gap-1.5 md:ml-auto\">\n <span class=\"legend flex items-center gap-2\">\n {t(\"activity.export.title\")}\n <Tip text={t(\"activity.export.lede\")} label={t(\"activity.export.title\")} />\n </span>\n <div class=\"flex flex-wrap items-center gap-2\">\n <input class=\"input input-sm w-auto\" type=\"date\" aria-label={t(\"activity.export.from\")} bind:value={range.from} max={range.to} />\n <span class=\"hint\">–</span>\n <input class=\"input input-sm w-auto\" type=\"date\" aria-label={t(\"activity.export.through\")} bind:value={range.to} min={range.from} max={today()} />\n <button type=\"button\" class=\"btn btn-sm\" disabled={exporting || !range.from || !range.to} onclick={download}>\n {t(\"activity.export.download\")}\n </button>\n </div>\n </div>\n </div>\n </Section>\n\n {#if loading && events.length === 0}\n <Spinner />\n {:else}\n <Section>\n <Events\n {events}\n limit={Infinity}\n empty={grave ? t(\"activity.empty.grave\") : t(\"activity.empty.plain\")}\n />\n\n <Pager {pages} shown={events.length} busy={loading} onpage={turn} />\n </Section>\n {/if}\n</Page>\n","import { t } from \"./copy.js\";\n\nexport const protocolName = (protocol) => t(`providers.protocols.${protocol}`);\n\nexport const secretMissing = (provider) =>\n ![\"saml\", \"mcp\"].includes(provider.protocol) &&\n !(provider.tokenAuthMethod === \"signed_secret\"\n ? provider.privateKeyHeld\n : provider.secretHeld);\n\nexport const providerMarks = (provider) =>\n [\n provider.role === \"delegate\" &&\n provider.protocol !== \"mcp\" && [\n \"owns\",\n t(\"providers.marks.owns\"),\n \"primary\",\n ],\n provider.trustsEmail && [\"mail\", t(\"providers.marks.trusts_email\"), \"good\"],\n provider.receivesSignals && [\n \"signals\",\n t(\"providers.marks.signals\"),\n \"info\",\n ],\n provider.delegates && [\"delegates\", t(\"providers.marks.delegates\"), \"info\"],\n secretMissing(provider) && [\n \"unconfirmed\",\n t(\"providers.marks.no_secret\"),\n \"warn\",\n ],\n ].filter(Boolean);\n","<script>\n import { createFeedback } from \"./lib/feedback.svelte.js\";\n import { t } from \"./lib/copy.js\";\n import { day } from \"./lib/format.js\";\n import { protocolName, providerMarks } from \"./lib/providers.js\";\n import { useRouter } from \"./lib/router.svelte.js\";\n import Link from \"./ui/Link.svelte\";\n import Marks from \"./ui/Marks.svelte\";\n import Notices from \"./ui/Notices.svelte\";\n import Page from \"./ui/Page.svelte\";\n import Row from \"./ui/Row.svelte\";\n import Section from \"./ui/Section.svelte\";\n import Spinner from \"./ui/Spinner.svelte\";\n import Table from \"./ui/Table.svelte\";\n\n let { api } = $props();\n\n const router = useRouter();\n\n const FIELDS = `\n key name protocol role trustsEmail receivesSignals delegates tokenAuthMethod secretHeld privateKeyHeld\n connections signedIn emailDomains archivedAt createdAt\n organization { key name }\n `;\n\n const QUERY = `\n query Providers {\n active: providers { ${FIELDS} }\n archived: providers(archived: true) { ${FIELDS} }\n }\n `;\n\n const COLUMNS = [\n t(\"providers.columns.provider\"),\n { label: t(\"providers.columns.kind\"), hide: true },\n { label: t(\"providers.columns.connections\"), hide: true, right: true },\n ];\n\n const feedback = createFeedback();\n\n let active = $state([]);\n let archived = $state([]);\n let loading = $state(true);\n\n async function load() {\n const data = await feedback.attempt(() => api.query(QUERY));\n\n loading = false;\n\n if (!data) return;\n\n active = data.active;\n archived = data.archived;\n }\n\n load();\n\n async function restore(provider) {\n const done = await feedback.attempt(\n () =>\n api.query(`mutation Restore($key: ID!) { restoreProvider(key: $key) { provider { key } } }`, {\n key: provider.key,\n }),\n t(\"providers.notices.restored\", { name: provider.name }),\n );\n\n if (done) await load();\n }\n</script>\n\n<Page title={t(\"providers.title\")} lede={t(\"providers.lede\")}>\n {#snippet actions()}\n <button type=\"button\" class=\"btn btn-primary btn-sm\" onclick={() => router.go(\"/providers/new\")}>\n {t(\"providers.add\")}\n </button>\n {/snippet}\n\n <Notices feedback={feedback.state} />\n\n {#if loading}\n <Spinner />\n {:else}\n <Table columns={COLUMNS} count={active.length} empty={t(\"providers.empty\")}>\n {#snippet rows()}\n {#each active as provider (provider.key)}\n <Row to={`/providers/${provider.key}`}>\n <td class=\"w-full max-w-0 md:w-auto md:max-w-none\">\n <div class=\"flex min-w-0 items-center gap-2\">\n <Link to={`/providers/${provider.key}`} class=\"link link-hover truncate font-medium\">{provider.name}</Link>\n <Marks marks={providerMarks(provider)} />\n </div>\n <div class=\"hint truncate text-xs\">\n <span class=\"font-mono\">{provider.key}</span>\n {#if provider.organization}· {provider.organization.name}{/if}\n <span class=\"md:hidden\">· {protocolName(provider.protocol)}</span>\n </div>\n </td>\n <td class=\"hidden text-sm whitespace-nowrap md:table-cell\">\n {protocolName(provider.protocol)}\n <div class=\"hint text-xs\">\n {provider.protocol === \"mcp\"\n ? t(\"providers.roles.never\")\n : provider.role === \"delegate\"\n ? t(\"providers.roles.owns\")\n : t(\"providers.roles.existing\")}\n </div>\n </td>\n <td class=\"hidden text-right text-sm whitespace-nowrap md:table-cell\">\n {provider.connections}\n {#if provider.signedIn}\n <div class=\"hint text-xs\">{t(\"providers.facts.signed_in\", { count: provider.signedIn })}</div>\n {/if}\n </td>\n </Row>\n {/each}\n {/snippet}\n </Table>\n\n {#if archived.length}\n <Section title={t(\"providers.archived\")}>\n <ul class=\"slats\">\n {#each archived as provider (provider.key)}\n <li class=\"slat\">\n <div class=\"flex flex-wrap items-baseline justify-between gap-x-3 gap-y-1\">\n <span class=\"flex flex-wrap items-baseline gap-2\">\n <Link to={`/providers/${provider.key}`} class=\"link link-hover text-sm font-medium\">{provider.name}</Link>\n <span class=\"hint font-mono text-xs\">{provider.key}</span>\n </span>\n <span class=\"flex items-baseline gap-3 text-xs\">\n <span class=\"hint\">{t(\"providers.archived_on\", { day: day(provider.archivedAt) })}</span>\n <button type=\"button\" class=\"link\" onclick={() => restore(provider)}>{t(\"providers.restore\")}</button>\n </span>\n </div>\n </li>\n {/each}\n </ul>\n </Section>\n {/if}\n {/if}\n</Page>\n","<script>\n import { untrack } from \"svelte\";\n import Connections from \"./Connections.svelte\";\n import { t } from \"./lib/copy.js\";\n import { createFeedback } from \"./lib/feedback.svelte.js\";\n import { day } from \"./lib/format.js\";\n import { protocolName, providerMarks, secretMissing } from \"./lib/providers.js\";\n import { useRouter } from \"./lib/router.svelte.js\";\n import Field from \"./ui/Field.svelte\";\n import Link from \"./ui/Link.svelte\";\n import Marks from \"./ui/Marks.svelte\";\n import Notices from \"./ui/Notices.svelte\";\n import Page from \"./ui/Page.svelte\";\n import Parts from \"./ui/Parts.svelte\";\n import Section from \"./ui/Section.svelte\";\n import Spinner from \"./ui/Spinner.svelte\";\n\n let { api, providerKey, part = null } = $props();\n\n const router = useRouter();\n\n const MAPPED = [\"email\", \"email_verified\", \"name\", \"given_name\", \"family_name\", \"preferred_username\", \"picture\"].map(\n (claim) => [claim, t(`providers.claims.${claim}`)],\n );\n\n const NAME_ID_FORMATS = [\n [\"\", t(\"providers.name_id_formats.any\")],\n [\"urn:oasis:names:tc:SAML:2.0:nameid-format:persistent\", t(\"providers.name_id_formats.persistent\")],\n [\"urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress\", t(\"providers.name_id_formats.email\")],\n [\"urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified\", t(\"providers.name_id_formats.unspecified\")],\n ];\n\n const ASKED = {\n domain: [t(\"providers.asked.domain\"), \"acme.okta.com\"],\n tenant: [t(\"providers.asked.tenant\"), \"00000000-0000-0000-0000-000000000000\"],\n realm: [t(\"providers.asked.realm\"), \"staff\"],\n };\n\n const FIELDS = `\n key name protocol preset authorizationUrl tokenUrl userinfoUrl emailsUrl clientId\n scopes subjectClaim claims tokenAuthMethod responseMode teamId keyId\n secretHeld privateKeyHeld connections signedIn archivedAt createdAt callbackUrl\n issuer jwksUri role trustsEmail receivesSignals emailDomains signupScopes\n idpEntityId idpSsoUrl idpCertificates metadataUrl metadataFetchedAt nameIdFormat spEntityId\n delegates delegatedScopes delegationParams delegationScope resourceUrl registeredAt delegations\n organization { key name }\n `;\n\n const PRESETS = `providerPresets { key name protocol asks needs defaults guide custom trustsEmail delegates delegatedScopes }`;\n\n const QUERY = `\n query Provider($key: ID!) {\n provider(key: $key) { ${FIELDS} }\n connections(provider: $key) {\n id subject label email emailVerified connectedAt signedInAt delegable\n provider { key name }\n actor { uuid identifier }\n delegations { id releasedAt client { clientId name } }\n }\n ${PRESETS}\n }\n `;\n\n const ARGUMENTS = [\n [\"name\", \"String\"],\n [\"protocol\", \"String\"],\n [\"authorizationUrl\", \"String\"],\n [\"tokenUrl\", \"String\"],\n [\"userinfoUrl\", \"String\"],\n [\"emailsUrl\", \"String\"],\n [\"clientId\", \"String\"],\n [\"clientSecret\", \"String\"],\n [\"scopes\", \"[String!]\"],\n [\"subjectClaim\", \"String\"],\n [\"claims\", \"JSON\"],\n [\"issuer\", \"String\"],\n [\"jwksUri\", \"String\"],\n [\"tokenAuthMethod\", \"String\"],\n [\"responseMode\", \"String\"],\n [\"teamId\", \"String\"],\n [\"keyId\", \"String\"],\n [\"privateKey\", \"String\"],\n [\"idpEntityId\", \"String\"],\n [\"idpSsoUrl\", \"String\"],\n [\"idpCertificates\", \"String\"],\n [\"metadataUrl\", \"String\"],\n [\"nameIdFormat\", \"String\"],\n [\"role\", \"String\"],\n [\"trustsEmail\", \"Boolean\"],\n [\"receivesSignals\", \"Boolean\"],\n [\"emailDomains\", \"[String!]\"],\n [\"signupScopes\", \"[String!]\"],\n [\"delegates\", \"Boolean\"],\n [\"delegatedScopes\", \"[String!]\"],\n [\"delegationParams\", \"JSON\"],\n [\"resourceUrl\", \"String\"],\n ];\n\n const declared = (extra) => [...extra, ...ARGUMENTS].map(([name, type]) => `$${name}: ${type}`).join(\", \");\n const passed = (extra) => [...extra, ...ARGUMENTS].map(([name]) => `${name}: $${name}`).join(\", \");\n\n const CREATE_EXTRA = [\n [\"key\", \"ID!\"],\n [\"preset\", \"ID\"],\n [\"presetValues\", \"JSON\"],\n ];\n\n const CREATE = `\n mutation Create(${declared(CREATE_EXTRA).replace(\"$name: String\", \"$name: String!\")}) {\n createProvider(${passed(CREATE_EXTRA)}) { provider { key } }\n }\n `;\n\n const UPDATE = `\n mutation Update(${declared([[\"key\", \"ID!\"]])}) {\n updateProvider(${passed([[\"key\", \"ID!\"]])}) { provider { key } }\n }\n `;\n\n const DISCOVER = `\n mutation Discover($issuer: String!) {\n discoverProvider(issuer: $issuer) { issuer authorizationUrl tokenUrl userinfoUrl jwksUri }\n }\n `;\n\n const METADATA = `\n mutation Metadata($metadataUrl: String, $metadataXml: String) {\n readSamlMetadata(metadataUrl: $metadataUrl, metadataXml: $metadataXml) { idpEntityId idpSsoUrl idpCertificates }\n }\n `;\n\n const pairs = (held) =>\n Object.entries(held ?? {})\n .map(([name, value]) => `${name}=${value}`)\n .join(\" \");\n\n const blank = (preset) => ({\n key: preset.custom ? \"\" : preset.key,\n name: preset.custom ? \"\" : preset.name,\n preset: preset.custom ? null : preset.key,\n protocol: preset.protocol,\n asked: { ...preset.defaults },\n authorizationUrl: \"\",\n tokenUrl: \"\",\n userinfoUrl: \"\",\n emailsUrl: \"\",\n clientId: \"\",\n clientSecret: \"\",\n scopes: \"\",\n subjectClaim: preset.protocol === \"oidc\" ? \"sub\" : preset.protocol === \"saml\" ? \"name_id\" : \"id\",\n claims: Object.fromEntries(MAPPED.map(([claim]) => [claim, \"\"])),\n issuer: \"\",\n jwksUri: \"\",\n tokenAuthMethod: preset.needs.includes(\"private_key\") ? \"signed_secret\" : \"client_secret_post\",\n responseMode: \"\",\n teamId: \"\",\n keyId: \"\",\n privateKey: \"\",\n idpEntityId: \"\",\n idpSsoUrl: \"\",\n idpCertificates: \"\",\n metadataUrl: \"\",\n metadataXml: \"\",\n nameIdFormat: \"\",\n role: \"credential\",\n trustsEmail: Boolean(preset.trustsEmail),\n receivesSignals: false,\n emailDomains: \"\",\n signupScopes: \"\",\n delegates: Boolean(preset.delegates),\n delegatedScopes: (preset.delegatedScopes ?? []).join(\" \"),\n delegationParams: \"\",\n resourceUrl: \"\",\n });\n\n const drafted = (provider) => ({\n ...blank({ key: provider.key, name: provider.name, protocol: provider.protocol, needs: [], defaults: {}, custom: true }),\n key: provider.key,\n name: provider.name,\n preset: provider.preset,\n authorizationUrl: provider.authorizationUrl ?? \"\",\n tokenUrl: provider.tokenUrl ?? \"\",\n userinfoUrl: provider.userinfoUrl ?? \"\",\n emailsUrl: provider.emailsUrl ?? \"\",\n clientId: provider.clientId ?? \"\",\n scopes: provider.scopes.join(\" \"),\n subjectClaim: provider.subjectClaim,\n claims: { ...Object.fromEntries(MAPPED.map(([claim]) => [claim, \"\"])), ...provider.claims },\n issuer: provider.issuer ?? \"\",\n jwksUri: provider.jwksUri ?? \"\",\n tokenAuthMethod: provider.tokenAuthMethod,\n responseMode: provider.responseMode ?? \"\",\n teamId: provider.teamId ?? \"\",\n keyId: provider.keyId ?? \"\",\n idpEntityId: provider.idpEntityId ?? \"\",\n idpSsoUrl: provider.idpSsoUrl ?? \"\",\n idpCertificates: provider.idpCertificates ?? \"\",\n metadataUrl: provider.metadataUrl ?? \"\",\n nameIdFormat: provider.nameIdFormat ?? \"\",\n role: provider.role,\n trustsEmail: provider.trustsEmail,\n receivesSignals: provider.receivesSignals,\n emailDomains: provider.emailDomains.join(\" \"),\n signupScopes: provider.signupScopes.join(\" \"),\n delegates: provider.delegates,\n delegatedScopes: provider.delegatedScopes.join(\" \"),\n delegationParams: pairs(provider.delegationParams),\n resourceUrl: provider.resourceUrl ?? \"\",\n });\n\n const feedback = createFeedback();\n\n let provider = $state(null);\n let connected = $state([]);\n let presets = $state([]);\n let draft = $state(null);\n let baseline = $state(\"\");\n let loading = $state(true);\n let busy = $state(false);\n\n const fresh = $derived(providerKey === \"new\");\n const chosen = $derived(\n fresh ? (presets.find((preset) => preset.key === part) ?? null) : (presets.find((preset) => preset.key === provider?.preset) ?? null),\n );\n const custom = $derived(fresh ? Boolean(chosen?.custom) : true);\n const saml = $derived(draft?.protocol === \"saml\");\n const oauth2 = $derived(draft?.protocol === \"oauth2\");\n const oidc = $derived(draft?.protocol === \"oidc\");\n const mcp = $derived(draft?.protocol === \"mcp\");\n const signsSecret = $derived(draft?.tokenAuthMethod === \"signed_secret\");\n const origin = typeof window === \"undefined\" ? \"\" : window.location.origin;\n const callbackUrl = $derived(`${origin}/login/provider/${draft?.key?.trim() || \"…\"}/callback`);\n const spEntityId = $derived(`${origin}/login/provider/${draft?.key?.trim() || \"…\"}/metadata`);\n const named = $derived(draft?.name.trim() || t(\"providers.form.the_provider\"));\n const dirty = $derived(Boolean(draft && !fresh && JSON.stringify(draft) !== baseline));\n\n const PARTS = $derived(\n [\n [null, \"\", t(\"providers.parts.setup\")],\n !mcp && [\"sign-in\", \"/sign-in\", t(\"providers.parts.sign_in\")],\n !saml && [\"clients\", \"/clients\", t(\"providers.parts.clients\")],\n [\"accounts\", \"/accounts\", t(\"providers.parts.accounts\", { count: connected.length })],\n ].filter(Boolean),\n );\n\n const known = $derived(presets.filter((preset) => !preset.custom));\n const generic = $derived(presets.filter((preset) => preset.custom));\n\n async function load() {\n loading = true;\n\n const data = await feedback.attempt(() =>\n fresh ? api.query(`query Presets { ${PRESETS} }`) : api.query(QUERY, { key: providerKey }),\n );\n\n loading = false;\n\n if (!data) return;\n\n presets = data.providerPresets;\n\n if (fresh) {\n provider = null;\n connected = [];\n return;\n }\n\n provider = data.provider;\n connected = data.connections;\n draft = provider ? drafted(provider) : null;\n baseline = JSON.stringify(draft);\n }\n\n $effect(() => {\n providerKey;\n untrack(load);\n });\n\n $effect(() => {\n if (!fresh) return;\n\n const preset = chosen;\n\n untrack(() => {\n draft = preset ? blank(preset) : null;\n });\n });\n\n const trimmed = (value) => value?.trim() || null;\n const words = (value) => value.split(/[\\s,]+/).filter(Boolean);\n const params = (value) =>\n Object.fromEntries(\n words(value)\n .map((pair) => pair.split(\"=\"))\n .filter(([name, held]) => name && held !== undefined)\n .map(([name, ...rest]) => [name, rest.join(\"=\")]),\n );\n\n const claims = () =>\n Object.fromEntries(\n Object.entries(draft.claims)\n .map(([claim, path]) => [claim, path?.trim()])\n .filter(([, path]) => path),\n );\n\n const metadataFields = () => ({\n idpEntityId: trimmed(draft.idpEntityId),\n idpSsoUrl: trimmed(draft.idpSsoUrl),\n idpCertificates: trimmed(draft.idpCertificates),\n nameIdFormat: trimmed(draft.nameIdFormat),\n });\n\n function variables() {\n const held = {\n key: draft.key.trim(),\n name: draft.name.trim(),\n role: draft.role,\n trustsEmail: saml ? false : draft.trustsEmail,\n receivesSignals: oidc ? draft.receivesSignals : false,\n emailDomains: words(draft.emailDomains),\n signupScopes: words(draft.signupScopes),\n clientSecret: trimmed(draft.clientSecret),\n privateKey: trimmed(draft.privateKey),\n delegates: saml ? false : mcp || draft.delegates,\n delegatedScopes: saml ? [] : words(draft.delegatedScopes),\n delegationParams: saml ? {} : params(draft.delegationParams),\n };\n\n if (fresh && !custom) {\n return {\n ...held,\n preset: draft.preset,\n presetValues: draft.asked,\n clientId: trimmed(draft.clientId),\n teamId: trimmed(draft.teamId),\n keyId: trimmed(draft.keyId),\n metadataUrl: trimmed(draft.metadataUrl),\n ...(saml ? metadataFields() : {}),\n ...(mcp ? { resourceUrl: trimmed(draft.resourceUrl) } : {}),\n };\n }\n\n return {\n ...held,\n protocol: draft.protocol,\n authorizationUrl: saml ? null : trimmed(draft.authorizationUrl),\n tokenUrl: saml ? null : trimmed(draft.tokenUrl),\n userinfoUrl: saml ? null : trimmed(draft.userinfoUrl),\n emailsUrl: oauth2 ? trimmed(draft.emailsUrl) : null,\n clientId: saml ? null : trimmed(draft.clientId),\n scopes: saml ? [] : words(draft.scopes),\n subjectClaim: draft.subjectClaim.trim(),\n claims: claims(),\n issuer: oidc ? trimmed(draft.issuer) : null,\n jwksUri: oidc ? trimmed(draft.jwksUri) : null,\n tokenAuthMethod: draft.tokenAuthMethod,\n responseMode: trimmed(draft.responseMode),\n teamId: signsSecret ? trimmed(draft.teamId) : null,\n keyId: signsSecret ? trimmed(draft.keyId) : null,\n metadataUrl: saml ? trimmed(draft.metadataUrl) : null,\n nameIdFormat: saml ? trimmed(draft.nameIdFormat) : null,\n resourceUrl: mcp ? trimmed(draft.resourceUrl) : null,\n ...(saml ? metadataFields() : { idpEntityId: null, idpSsoUrl: null, idpCertificates: null }),\n };\n }\n\n async function discover() {\n busy = true;\n\n const data = await feedback.attempt(\n () => api.query(DISCOVER, { issuer: draft.issuer.trim() }),\n t(\"providers.notices.discovered\"),\n );\n\n busy = false;\n\n if (!data) return;\n\n const found = data.discoverProvider;\n\n draft.issuer = found.issuer;\n draft.authorizationUrl = found.authorizationUrl;\n draft.tokenUrl = found.tokenUrl;\n draft.jwksUri = found.jwksUri;\n draft.userinfoUrl = found.userinfoUrl ?? draft.userinfoUrl;\n }\n\n async function readMetadata() {\n busy = true;\n\n const data = await feedback.attempt(\n () => api.query(METADATA, { metadataUrl: trimmed(draft.metadataUrl), metadataXml: trimmed(draft.metadataXml) }),\n t(\"providers.notices.metadata_read\"),\n );\n\n busy = false;\n\n if (!data) return;\n\n Object.assign(draft, data.readSamlMetadata);\n draft.metadataXml = \"\";\n }\n\n async function save() {\n busy = true;\n\n const adding = fresh;\n const key = draft.key.trim();\n const done = await feedback.attempt(\n () => api.query(adding ? CREATE : UPDATE, variables()),\n adding\n ? mcp\n ? t(\"providers.notices.registered\", { name: draft.name })\n : t(\"providers.notices.added\", { name: draft.name })\n : t(\"providers.notices.saved\", { name: draft.name }),\n );\n\n busy = false;\n\n if (!done) return;\n\n if (adding) router.go(`/providers/${key}`);\n else await load();\n }\n\n const discard = () => {\n draft = JSON.parse(baseline);\n };\n\n async function act(mutation, notice, question = null) {\n if (question && !confirm(question)) return;\n\n const done = await feedback.attempt(\n () => api.query(`mutation Act($key: ID!) { ${mutation}(key: $key) { provider { key } } }`, { key: provider.key }),\n notice,\n );\n\n if (done) await load();\n }\n\n const archive = () =>\n act(\n \"archiveProvider\",\n t(\"providers.notices.archived\", { name: provider.name }),\n t(\"providers.confirm.archive\", { name: provider.name }),\n );\n\n const restore = () => act(\"restoreProvider\", t(\"providers.notices.restored\", { name: provider.name }));\n\n const register = () =>\n act(\n \"registerProvider\",\n t(\"providers.notices.reregistered\", { name: provider.name }),\n t(\"providers.confirm.register\", { name: provider.name }),\n );\n\n const copy = (value) => navigator.clipboard?.writeText(value);\n\n const needsSecret = $derived(\n !saml && !mcp && !signsSecret && (fresh ? (chosen?.needs ?? [\"client_secret\"]).includes(\"client_secret\") : true),\n );\n\n const complete = $derived.by(() => {\n if (!draft?.key.trim() || !draft.name.trim()) return false;\n if (fresh && !custom) return (chosen?.asks ?? []).every((variable) => draft.asked[variable]?.trim());\n if (saml) return draft.idpEntityId.trim() && draft.idpSsoUrl.trim() && draft.idpCertificates.trim();\n if (mcp) return fresh ? draft.resourceUrl.trim() : true;\n\n return draft.clientId.trim() && draft.authorizationUrl.trim() && draft.tokenUrl.trim();\n });\n\n const lede = $derived(\n provider\n ? [\n protocolName(provider.protocol),\n provider.protocol === \"mcp\"\n ? t(\"providers.roles.never\")\n : provider.role === \"delegate\"\n ? t(\"providers.roles.owns\")\n : t(\"providers.roles.existing\"),\n ].join(\" · \")\n : null,\n );\n</script>\n\n{#snippet toggle(checked, onchange, label, hint)}\n <label class=\"flex items-start gap-3 text-sm\">\n <input type=\"checkbox\" class=\"toggle toggle-sm mt-0.5\" {checked} onchange={(event) => onchange(event.currentTarget.checked)} />\n <span class=\"flex flex-col gap-0.5\">\n <span>{label}</span>\n {#if hint}<span class=\"hint\">{hint}</span>{/if}\n </span>\n </label>\n{/snippet}\n\n{#snippet give()}\n <Section row title={t(\"providers.form.give\", { name: named })} lede={chosen?.guide && fresh ? null : t(\"providers.sections.give_lede\")}>\n {#if chosen?.guide && fresh}\n <p class=\"text-sm\">\n {t(\"providers.form.guide_lead\", { name: chosen.name })}\n <a class=\"link\" href={chosen.guide} target=\"_blank\" rel=\"noreferrer noopener\">{t(\"providers.form.guide_link\", { name: chosen.name })}</a>.\n </p>\n {/if}\n\n <ul class=\"slats\">\n {#each saml ? [[t(\"providers.form.acs_url\"), callbackUrl], [t(\"providers.form.sp_entity_id\"), spEntityId]] : [[t(\"providers.form.redirect_uri\"), callbackUrl]] as [label, value] (label)}\n <li class=\"slat\">\n <span class=\"hint text-xs\">{label}</span>\n <span class=\"flex items-center justify-between gap-3\">\n <code class=\"min-w-0 font-mono text-xs break-all\">{value}</code>\n <button type=\"button\" class=\"btn btn-ghost btn-xs shrink-0\" onclick={() => copy(value)}>{t(\"providers.copy\")}</button>\n </span>\n </li>\n {/each}\n </ul>\n </Section>\n{/snippet}\n\n{#snippet setup()}\n {@render give()}\n\n <Section row title={t(\"providers.sections.identity\")} lede={t(\"providers.sections.identity_lede\")}>\n <Field label={t(\"providers.form.name\")} bind:value={draft.name} placeholder=\"Acme\" />\n {#if fresh}\n <Field\n label={t(\"providers.form.key\")}\n bind:value={draft.key}\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n placeholder=\"acme\"\n />\n {/if}\n\n {#if fresh && !custom}\n {#each chosen.asks as variable (variable)}\n <Field\n label={ASKED[variable]?.[0] ?? variable}\n bind:value={draft.asked[variable]}\n placeholder={ASKED[variable]?.[1] ?? \"\"}\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n />\n {/each}\n {/if}\n </Section>\n\n {#if saml}\n <Section row title={t(\"providers.form.identity_provider\")} lede={t(\"providers.form.metadata_hint\")}>\n <Field\n label={t(\"providers.form.metadata_url\")}\n bind:value={draft.metadataUrl}\n onsave={() => (draft.metadataUrl.trim() || draft.metadataXml.trim()) && !busy && readMetadata()}\n save={t(\"providers.form.read\")}\n placeholder=\"https://idp.acme.test/metadata\"\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n />\n\n {#if provider?.metadataUrl}\n <p class=\"hint\">\n {t(\"providers.facts.metadata_read\", {\n day: provider.metadataFetchedAt ? day(provider.metadataFetchedAt) : t(\"providers.facts.never\"),\n })}\n </p>\n {/if}\n\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"providers.form.paste_metadata\")}</span>\n <textarea class=\"textarea textarea-sm w-full max-w-sm font-mono text-xs\" rows=\"3\" bind:value={draft.metadataXml}></textarea>\n </label>\n\n <Field label={t(\"providers.form.entity_id\")} bind:value={draft.idpEntityId} />\n <Field label={t(\"providers.form.sign_in_url\")} bind:value={draft.idpSsoUrl} />\n\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"providers.form.certificates\")}</span>\n <textarea class=\"textarea textarea-sm w-full max-w-sm font-mono text-xs\" rows=\"4\" bind:value={draft.idpCertificates}></textarea>\n </label>\n\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"providers.form.name_id_format\")}</span>\n <select class=\"select select-sm w-full\" bind:value={draft.nameIdFormat}>\n {#each NAME_ID_FORMATS as [value, label] (value)}\n <option {value}>{label}</option>\n {/each}\n </select>\n </label>\n </Section>\n {/if}\n\n {#if mcp}\n <Section row title={t(\"providers.sections.mcp\")} lede={t(\"providers.form.mcp_hint\")}>\n {#if fresh && custom}\n <Field\n label={t(\"providers.form.mcp_url\")}\n bind:value={draft.resourceUrl}\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n placeholder=\"https://mcp.acme.test/mcp\"\n />\n {:else}\n <code class=\"font-mono text-xs break-all\">{draft.resourceUrl}</code>\n {#if provider}\n <p class=\"hint\">\n {t(\"providers.facts.registered\", {\n day: provider.registeredAt ? day(provider.registeredAt) : t(\"providers.facts.never\"),\n })}\n </p>\n {/if}\n {/if}\n </Section>\n {/if}\n\n {#if custom && !saml && !mcp}\n <Section row title={t(\"providers.sections.endpoints\")} lede={oidc ? t(\"providers.sections.endpoints_oidc\") : null}>\n {#if oidc}\n <Field\n label={t(\"providers.form.issuer\")}\n bind:value={draft.issuer}\n onsave={() => draft.issuer.trim() && !busy && discover()}\n save={t(\"providers.form.discover\")}\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n placeholder=\"https://id.acme.test\"\n />\n {/if}\n\n <Field label={t(\"providers.form.authorization_url\")} bind:value={draft.authorizationUrl} />\n <Field label={t(\"providers.form.token_url\")} bind:value={draft.tokenUrl} />\n <Field\n label={t(\"providers.form.userinfo_url\")}\n bind:value={draft.userinfoUrl}\n placeholder={oauth2 ? \"\" : t(\"providers.form.optional\")}\n />\n {#if oauth2}\n <Field label={t(\"providers.form.emails_url\")} bind:value={draft.emailsUrl} placeholder={t(\"providers.form.optional\")} />\n {:else}\n <Field label={t(\"providers.form.jwks_uri\")} bind:value={draft.jwksUri} placeholder={t(\"providers.form.discovered_if_empty\")} />\n {/if}\n </Section>\n {/if}\n\n {#if !saml && !mcp}\n <Section row title={t(\"providers.form.credentials\")} lede={t(\"providers.sections.credentials_lede\", { name: named })}>\n <Field\n label={signsSecret ? t(\"providers.form.services_id\") : t(\"providers.form.client_id\")}\n bind:value={draft.clientId}\n autocomplete=\"off\"\n />\n\n {#if needsSecret}\n <Field\n label={t(\"providers.form.client_secret\")}\n type=\"password\"\n bind:value={draft.clientSecret}\n autocomplete=\"off\"\n placeholder={fresh ? \"\" : provider?.secretHeld ? t(\"providers.form.unchanged\") : \"\"}\n />\n {/if}\n\n {#if signsSecret}\n <Field label={t(\"providers.form.team_id\")} bind:value={draft.teamId} autocomplete=\"off\" />\n <Field label={t(\"providers.form.key_id\")} bind:value={draft.keyId} autocomplete=\"off\" />\n\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"providers.form.private_key\")}</span>\n <textarea\n class=\"textarea textarea-sm w-full max-w-sm font-mono text-xs\"\n rows=\"4\"\n bind:value={draft.privateKey}\n placeholder={fresh ? \"-----BEGIN PRIVATE KEY-----\" : t(\"providers.form.unchanged\")}\n ></textarea>\n </label>\n {/if}\n\n {#if custom}\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"providers.form.sends_secret\")}</span>\n <select class=\"select select-sm w-full\" bind:value={draft.tokenAuthMethod}>\n <option value=\"client_secret_post\">{t(\"providers.form.secret_post\")}</option>\n <option value=\"client_secret_basic\">{t(\"providers.form.secret_basic\")}</option>\n <option value=\"signed_secret\">{t(\"providers.form.secret_signed\")}</option>\n </select>\n </label>\n\n <Field\n label={t(\"providers.form.extra_scopes\")}\n bind:value={draft.scopes}\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n placeholder={oidc ? t(\"providers.form.oidc_scopes\") : \"read:user\"}\n />\n {/if}\n </Section>\n {/if}\n{/snippet}\n\n{#snippet signIn()}\n <Section row title={t(\"providers.sections.accounts\")} lede={t(\"providers.form.owns_hint\", { name: named })}>\n {@render toggle(\n draft.role === \"delegate\",\n (on) => (draft.role = on ? \"delegate\" : \"credential\"),\n t(\"providers.form.owns\", { name: named }),\n null,\n )}\n\n {#if draft.role === \"delegate\"}\n <Field\n label={t(\"providers.form.signup_scopes\")}\n bind:value={draft.signupScopes}\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n placeholder=\"openid profile email offline_access identities\"\n />\n {/if}\n </Section>\n\n <Section row title={t(\"providers.sections.addresses\")}>\n {#if !saml}\n {@render toggle(draft.trustsEmail, (on) => (draft.trustsEmail = on), t(\"providers.form.trusts_email\"), t(\"providers.form.trusts_email_hint\"))}\n {/if}\n\n <Field\n label={saml ? t(\"providers.form.saml_domains\") : t(\"providers.form.domains\")}\n bind:value={draft.emailDomains}\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n placeholder={t(\"providers.form.any_domain\")}\n />\n </Section>\n\n {#if oidc}\n <Section row title={t(\"providers.sections.signals\")}>\n {@render toggle(\n draft.receivesSignals,\n (on) => (draft.receivesSignals = on),\n t(\"providers.form.signals\"),\n `${t(\"providers.form.signals_lead\")} ${origin}/ssf/events. ${t(\"providers.form.signals_rest\")}`,\n )}\n </Section>\n {/if}\n\n {#if custom}\n <Section row title={t(\"providers.form.claims\")} lede={t(\"providers.sections.claims_lede\")}>\n <Field\n label={saml ? t(\"providers.form.subject_saml\") : oidc ? t(\"providers.form.subject_oidc\") : t(\"providers.form.subject_path\")}\n bind:value={draft.subjectClaim}\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n />\n {#each MAPPED.filter(([claim]) => !(saml && claim === \"email_verified\")) as [claim, label] (claim)}\n <Field\n {label}\n bind:value={draft.claims[claim]}\n placeholder={saml ? t(\"providers.form.attribute_name\") : claim}\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n />\n {/each}\n </Section>\n {/if}\n{/snippet}\n\n{#snippet clients()}\n <Section row title={t(\"providers.sections.delegation\")} lede={t(\"providers.form.delegates_hint\", { name: named })}>\n {#if !mcp}\n {@render toggle(draft.delegates, (on) => (draft.delegates = on), t(\"providers.form.delegates\", { name: named }), null)}\n {/if}\n\n {#if draft.delegates || mcp}\n <Field\n label={t(\"providers.form.delegated_scopes\")}\n bind:value={draft.delegatedScopes}\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n placeholder={mcp ? t(\"providers.form.server_grants\") : \"https://www.googleapis.com/auth/drive.readonly\"}\n />\n <Field\n label={t(\"providers.form.delegation_params\")}\n bind:value={draft.delegationParams}\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n placeholder=\"access_type=offline prompt=consent\"\n />\n <p class=\"hint\">\n {t(\"providers.form.delegation_asks\")}\n <code class=\"font-mono\">masks:delegate:{draft.key.trim() || \"key\"}</code>.\n {t(\"providers.form.delegation_reconnect\")}\n </p>\n {#if provider}\n <p class=\"text-sm\">{t(\"providers.facts.delegations_count\", { count: provider.delegations })}</p>\n {/if}\n {/if}\n </Section>\n{/snippet}\n\n{#if fresh}\n <Page\n title={chosen ? t(\"providers.form.add_title\", { name: chosen.custom ? protocolName(chosen.protocol) : chosen.name }) : t(\"providers.add\")}\n back={{ to: chosen ? \"/providers/new\" : \"/providers\", label: chosen ? t(\"providers.picker.back\") : t(\"providers.back\") }}\n lede={chosen ? null : t(\"providers.picker.help\")}\n >\n <Notices feedback={feedback.state} />\n\n {#if loading}\n <Spinner />\n {:else if !chosen}\n {#each [[t(\"providers.picker.known\"), known], [t(\"providers.picker.generic\"), generic]] as [heading, list] (heading)}\n {#if list.length}\n <Section title={heading}>\n <div class=\"grid gap-2 sm:grid-cols-2 lg:grid-cols-3\">\n {#each list as preset (preset.key)}\n <Link to={`/providers/new/${preset.key}`} class=\"sheet sheet-press flex items-baseline justify-between gap-3 px-4 py-3 no-underline\">\n <span class=\"text-sm font-medium\">{preset.custom ? protocolName(preset.protocol) : preset.name}</span>\n <span class=\"hint text-xs\">{preset.custom ? \"\" : protocolName(preset.protocol)}</span>\n </Link>\n {/each}\n </div>\n </Section>\n {/if}\n {/each}\n {:else if draft}\n <div class=\"grid gap-4\">\n {@render setup()}\n {#if !mcp}{@render signIn()}{/if}\n {#if !saml}{@render clients()}{/if}\n\n <div class=\"flex gap-2 border-t border-[var(--line)] pt-5\">\n <button type=\"button\" class=\"btn btn-primary btn-sm\" disabled={busy || !complete} onclick={save}>\n {busy ? t(\"providers.form.saving\") : t(\"providers.form.add\")}\n </button>\n <Link to=\"/providers\" class=\"btn btn-ghost btn-sm\">{t(\"providers.cancel\")}</Link>\n </div>\n </div>\n {/if}\n </Page>\n{:else if loading && !provider}\n <Spinner />\n{:else if !provider}\n <div class=\"alert alert-error alert-soft text-sm\" role=\"alert\">{feedback.state.failure ?? t(\"providers.missing\")}</div>\n{:else}\n <Page title={provider.name} id={provider.key} back={{ to: \"/providers\", label: t(\"providers.back\") }} {lede}>\n {#snippet after()}\n <Marks marks={providerMarks(provider)} />\n {/snippet}\n\n <Notices feedback={feedback.state} />\n\n {#if provider.archivedAt}\n <div class=\"callout callout-quiet\" role=\"status\">\n <div class=\"callout-words\">\n <strong>{t(\"providers.callouts.archived\", { day: day(provider.archivedAt) })}</strong>\n </div>\n <div class=\"callout-actions\">\n <button type=\"button\" class=\"btn btn-sm\" onclick={restore}>{t(\"providers.restore\")}</button>\n </div>\n </div>\n {:else if secretMissing(provider)}\n <div class=\"callout callout-warn\" role=\"status\">\n <div class=\"callout-words\">\n <strong>{t(\"providers.callouts.no_secret\")}</strong>\n <span>{t(\"providers.callouts.no_secret_detail\", { name: provider.name })}</span>\n </div>\n </div>\n {/if}\n\n {#if provider.organization}\n <div class=\"callout callout-info\">\n <div class=\"callout-words\">\n <span>\n {t(\"providers.callouts.organization_lead\")}\n <Link to={`/organizations/${provider.organization.key}`}>{provider.organization.name}</Link>.\n {t(\"providers.callouts.organization_rest\")}\n </span>\n </div>\n </div>\n {/if}\n\n <Parts base={`/providers/${provider.key}`} {part} parts={PARTS} label={t(\"providers.parts.label\")} />\n\n <div class=\"grid gap-4\">\n {#if part === \"sign-in\" && !mcp}\n {@render signIn()}\n {:else if part === \"clients\" && !saml}\n {@render clients()}\n {:else if part === \"accounts\"}\n <Section>\n <Connections {api} {feedback} rows={connected} onchange={load} showActor />\n </Section>\n {:else}\n {@render setup()}\n\n {#if !provider.archivedAt}\n <Section row title={t(\"providers.danger\")} lede={mcp ? t(\"providers.danger_lede_mcp\") : t(\"providers.danger_lede\")}>\n <div class=\"flex flex-wrap gap-2\">\n {#if mcp}\n <button type=\"button\" class=\"btn btn-sm\" onclick={register}>{t(\"providers.register\")}</button>\n {/if}\n <button type=\"button\" class=\"btn btn-sm btn-error btn-outline\" onclick={archive}>{t(\"providers.archive\")}</button>\n </div>\n </Section>\n {/if}\n {/if}\n </div>\n\n {#if dirty}\n <div class=\"savebar\" role=\"region\" aria-label={t(\"providers.unsaved\")}>\n <span class=\"text-sm font-medium\">{t(\"providers.unsaved\")}</span>\n <div class=\"flex gap-2\">\n <button type=\"button\" class=\"btn btn-ghost btn-sm\" onclick={discard}>{t(\"providers.discard\")}</button>\n <button type=\"button\" class=\"btn btn-primary btn-sm\" disabled={busy || !complete} onclick={save}>\n {busy ? t(\"providers.form.saving\") : t(\"providers.form.save\")}\n </button>\n </div>\n </div>\n {/if}\n </Page>\n{/if}\n","<script>\n import { createFeedback } from \"./lib/feedback.svelte.js\";\n import { t } from \"./lib/copy.js\";\n import { day } from \"./lib/format.js\";\n import Section from \"./ui/Section.svelte\";\n import Field from \"./ui/Field.svelte\";\n import Notices from \"./ui/Notices.svelte\";\n import Spinner from \"./ui/Spinner.svelte\";\n import Switch from \"./ui/Switch.svelte\";\n\n let { api } = $props();\n\n const FIELDS = `key name kind service label primary settings secretsHeld archivedAt createdAt`;\n\n const QUERY = `\n query Senders {\n active: senders { ${FIELDS} }\n archived: senders(archived: true) { ${FIELDS} }\n senderServices {\n service kind label\n fields { key label type secret required options default hint }\n }\n tenant { mails texts }\n }\n `;\n\n const KINDS = [\n {\n kind: \"mail\",\n title: t(\"senders.kinds.mail.title\"),\n lede: t(\"senders.kinds.mail.lede\"),\n idle: t(\"senders.kinds.mail.idle\"),\n to: \"you@example.com\",\n },\n {\n kind: \"sms\",\n title: t(\"senders.kinds.sms.title\"),\n lede: t(\"senders.kinds.sms.lede\"),\n idle: t(\"senders.kinds.sms.idle\"),\n to: \"+15551234567\",\n },\n ];\n\n const feedback = createFeedback();\n\n let data = $state(null);\n let loading = $state(true);\n let busy = $state(false);\n let editing = $state(null);\n let draft = $state(null);\n let testing = $state({});\n\n const services = $derived(data?.senderServices ?? []);\n const serviceOf = (name) => services.find((held) => held.service === name);\n const forKind = (list, kind) => (list ?? []).filter((held) => held.kind === kind);\n\n async function load() {\n loading = true;\n\n const answer = await feedback.attempt(() => api.query(QUERY));\n\n loading = false;\n\n if (answer) data = answer;\n }\n\n load();\n\n function blankConfig(service) {\n return Object.fromEntries(\n service.fields.map((field) => [\n field.key,\n field.secret ? \"\" : (field.default ?? (field.type === \"boolean\" ? false : \"\")),\n ]),\n );\n }\n\n function add(kind) {\n const service = services.find((held) => held.kind === kind);\n\n editing = \"\";\n draft = {\n kind,\n service: service.service,\n key: \"\",\n name: \"\",\n primary: forKind(data.active, kind).length === 0,\n config: blankConfig(service),\n };\n feedback.clear();\n }\n\n function pick(name) {\n const service = serviceOf(name);\n\n draft.service = name;\n draft.config = blankConfig(service);\n\n if (!draft.key) draft.key = name.replace(/_/g, \"-\");\n if (!draft.name) draft.name = service.label;\n }\n\n function edit(sender) {\n const service = serviceOf(sender.service);\n\n editing = sender.key;\n draft = {\n kind: sender.kind,\n service: sender.service,\n key: sender.key,\n name: sender.name,\n primary: sender.primary,\n secretsHeld: sender.secretsHeld,\n config: Object.fromEntries(\n service.fields.map((field) => [\n field.key,\n field.secret ? \"\" : (sender.settings[field.key] ?? field.default ?? \"\"),\n ]),\n ),\n };\n feedback.clear();\n }\n\n function close() {\n editing = null;\n draft = null;\n feedback.clear();\n }\n\n function config() {\n const service = serviceOf(draft.service);\n\n return Object.fromEntries(\n service.fields\n .filter((field) => !(field.secret && !draft.config[field.key]))\n .map((field) => [\n field.key,\n field.type === \"integer\" ? Number(draft.config[field.key]) || null : draft.config[field.key],\n ]),\n );\n }\n\n async function save() {\n busy = true;\n\n const fresh = editing === \"\";\n const done = await feedback.attempt(\n () =>\n fresh\n ? api.query(\n `mutation Create($key: ID!, $service: String!, $name: String!, $config: JSON, $primary: Boolean) {\n createSender(key: $key, service: $service, name: $name, config: $config, primary: $primary) {\n sender { key }\n }\n }`,\n {\n key: draft.key.trim(),\n service: draft.service,\n name: draft.name.trim(),\n config: config(),\n primary: draft.primary,\n },\n )\n : api.query(\n `mutation Update($key: ID!, $name: String, $config: JSON, $primary: Boolean) {\n updateSender(key: $key, name: $name, config: $config, primary: $primary) {\n sender { key }\n }\n }`,\n { key: draft.key, name: draft.name.trim(), config: config(), primary: draft.primary },\n ),\n fresh ? t(\"senders.added\", { name: draft.name }) : t(\"senders.saved\", { name: draft.name }),\n );\n\n busy = false;\n\n if (!done) return;\n\n close();\n await load();\n }\n\n async function act(mutation, sender, notice, question = null) {\n if (question && !confirm(question)) return;\n\n const done = await feedback.attempt(\n () =>\n api.query(`mutation Act($key: ID!) { ${mutation}(key: $key) { sender { key } } }`, {\n key: sender.key,\n }),\n notice,\n );\n\n if (done) await load();\n }\n\n async function makePrimary(sender) {\n const done = await feedback.attempt(\n () =>\n api.query(\n `mutation Primary($key: ID!) { updateSender(key: $key, primary: true) { sender { key } } }`,\n { key: sender.key },\n ),\n t(\"senders.primary_notice\", { name: sender.name }),\n );\n\n if (done) await load();\n }\n\n async function test(sender) {\n const to = (testing[sender.key] ?? \"\").trim();\n\n if (!to) return;\n\n busy = true;\n\n const answer = await feedback.attempt(() =>\n api.query(\n `mutation Test($key: ID!, $to: String!) { testSender(key: $key, to: $to) { delivered failure } }`,\n { key: sender.key, to },\n ),\n );\n\n busy = false;\n\n if (!answer) return;\n\n if (answer.testSender.delivered) {\n feedback.say(t(\"senders.tested\", { name: sender.name, to }));\n } else {\n feedback.blame(answer.testSender.failure);\n }\n }\n\n const complete = $derived.by(() => {\n if (!draft) return false;\n\n const service = serviceOf(draft.service);\n\n return (\n draft.key.trim() &&\n draft.name.trim() &&\n service.fields.every(\n (field) =>\n !field.required ||\n field.type === \"boolean\" ||\n (field.secret && draft.secretsHeld?.includes(field.key)) ||\n String(draft.config[field.key] ?? \"\").trim(),\n )\n );\n });\n</script>\n\n<div class=\"console-page\">\n <Notices feedback={feedback.state} />\n\n {#if loading && !data}\n <Spinner />\n {:else if data}\n {#if draft}\n <Section title={editing === \"\" ? t(\"senders.form.add\") : t(\"senders.form.edit\", { name: draft.name })}>\n {#if editing === \"\"}\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"senders.form.service\")}</span>\n <select\n class=\"select select-sm w-full\"\n value={draft.service}\n onchange={(event) => pick(event.currentTarget.value)}\n >\n {#each services.filter((held) => held.kind === draft.kind) as service (service.service)}\n <option value={service.service}>{service.label}</option>\n {/each}\n </select>\n </label>\n {/if}\n\n <div class=\"grid gap-3 sm:grid-cols-2\">\n <Field\n label={t(\"senders.form.key\")}\n bind:value={draft.key}\n disabled={editing !== \"\"}\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n />\n <Field label={t(\"senders.form.name\")} bind:value={draft.name} />\n </div>\n\n <div class=\"grid gap-3 sm:grid-cols-2\">\n {#each serviceOf(draft.service).fields as field (field.key)}\n {#if field.type === \"boolean\"}\n <div class=\"flex flex-col gap-1 sm:col-span-2\">\n <Switch label={field.label} bind:checked={draft.config[field.key]} />\n {#if field.hint}<p class=\"hint\">{field.hint}</p>{/if}\n </div>\n {:else if field.options}\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{field.label}</span>\n <select class=\"select select-sm w-full\" bind:value={draft.config[field.key]}>\n {#each field.options as option (option)}\n <option value={option}>{option}</option>\n {/each}\n </select>\n </label>\n {:else}\n <div class=\"flex flex-col gap-1\">\n <Field\n label={field.required ? field.label : t(\"senders.form.optional\", { label: field.label })}\n type={field.secret ? \"password\" : field.type === \"integer\" ? \"number\" : \"text\"}\n bind:value={draft.config[field.key]}\n autocomplete=\"off\"\n autocapitalize=\"none\"\n spellcheck=\"false\"\n placeholder={field.secret && draft.secretsHeld?.includes(field.key) ? t(\"senders.form.unchanged\") : \"\"}\n />\n {#if field.hint}<p class=\"hint\">{field.hint}</p>{/if}\n </div>\n {/if}\n {/each}\n </div>\n\n <Switch label={t(\"senders.form.primary\")} bind:checked={draft.primary} />\n\n <div class=\"flex gap-2\">\n <button type=\"button\" class=\"btn btn-primary btn-sm\" disabled={busy || !complete} onclick={save}>\n {editing === \"\" ? t(\"senders.form.create\") : t(\"senders.form.save\")}\n </button>\n <button type=\"button\" class=\"btn btn-ghost btn-sm\" onclick={close}>{t(\"senders.form.cancel\")}</button>\n </div>\n </Section>\n {/if}\n\n {#each KINDS as group (group.kind)}\n {@const held = forKind(data.active, group.kind)}\n\n <Section title={group.title} lede={held.length ? group.lede : group.idle}>\n {#snippet actions()}\n <button type=\"button\" class=\"btn btn-sm\" onclick={() => add(group.kind)}>{t(\"senders.list.add\")}</button>\n {/snippet}\n\n {#each held as sender (sender.key)}\n <div class=\"flex flex-col gap-3 sheet p-3\">\n <div class=\"flex flex-wrap items-center justify-between gap-2\">\n <div class=\"flex min-w-0 flex-col\">\n <span class=\"font-medium\">\n {sender.name}\n {#if sender.primary}<span class=\"badge badge-success badge-sm\">{t(\"senders.list.primary\")}</span>{/if}\n </span>\n <span class=\"hint\">\n {sender.label} · <span class=\"font-mono\">{sender.key}</span> · {t(\"senders.list.added\", { day: day(sender.createdAt) })}\n </span>\n </div>\n\n <div class=\"flex flex-wrap gap-2\">\n {#if !sender.primary}\n <button type=\"button\" class=\"btn btn-ghost btn-sm\" onclick={() => makePrimary(sender)}>\n {t(\"senders.list.make_primary\")}\n </button>\n {/if}\n <button type=\"button\" class=\"btn btn-sm\" onclick={() => edit(sender)}>{t(\"senders.list.edit\")}</button>\n <button\n type=\"button\"\n class=\"btn btn-ghost btn-sm\"\n onclick={() =>\n act(\n \"archiveSender\",\n sender,\n t(\"senders.archived_notice\", { name: sender.name }),\n t(\"senders.archive_confirm\", { name: sender.name }),\n )}\n >\n {t(\"senders.list.archive\")}\n </button>\n </div>\n </div>\n\n <Field\n label={t(\"senders.list.test_to\")}\n bind:value={testing[sender.key]}\n placeholder={group.to}\n save={t(\"senders.list.test\")}\n onsave={() => test(sender)}\n />\n </div>\n {/each}\n </Section>\n {/each}\n\n {#if data.archived.length}\n <Section title={t(\"senders.archived.title\")}>\n {#each data.archived as sender (sender.key)}\n <div class=\"flex flex-wrap items-center justify-between gap-2\">\n <span class=\"text-sm\">\n {sender.name} <span class=\"hint\">{sender.label} · {sender.kind}</span>\n </span>\n <button\n type=\"button\"\n class=\"btn btn-ghost btn-sm\"\n onclick={() => act(\"restoreSender\", sender, t(\"senders.restored\", { name: sender.name }))}\n >\n {t(\"senders.archived.restore\")}\n </button>\n </div>\n {/each}\n </Section>\n {/if}\n {/if}\n</div>\n","<script>\n import { t } from \"./lib/copy.js\";\n import { untrack } from \"svelte\";\n import { createFeedback } from \"./lib/feedback.svelte.js\";\n import Field from \"./ui/Field.svelte\";\n import Notices from \"./ui/Notices.svelte\";\n\n let { api, template, title, onsaved } = $props();\n\n const UPDATE = `\n mutation Word($kind: ID!, $subject: String, $message: String) {\n updateMailTemplate(kind: $kind, subject: $subject, message: $message) { mailTemplate { kind } }\n }\n `;\n\n const feedback = createFeedback();\n\n let subject = $state(untrack(() => template.subject) ?? \"\");\n let message = $state(untrack(() => template.message) ?? \"\");\n let busy = $state(false);\n\n const signature = $derived(template.kind === \"signature\");\n const custom = $derived(Boolean(template.subject || template.message));\n const names = $derived(template.placeholders.map((name) => `{{${name}}}`).join(\", \"));\n\n async function save(blank = false) {\n busy = true;\n\n const done = await feedback.attempt(\n () =>\n api.query(UPDATE, {\n kind: template.kind,\n subject: blank || signature ? \"\" : subject,\n message: blank ? \"\" : message,\n }),\n blank ? t(\"mail_template.reset\", { title }) : t(\"mail_template.saved\", { title }),\n );\n\n busy = false;\n\n if (done) onsaved?.();\n }\n</script>\n\n<details class=\"mail-template\" open={custom || undefined}>\n <summary class=\"term\">\n {t(signature ? \"mail_template.signature\" : \"mail_template.template\")}{custom ? t(\"mail_template.customized\") : \"\"}\n </summary>\n\n <form\n class=\"flex flex-col gap-3 pt-3\"\n onsubmit={(event) => {\n event.preventDefault();\n save();\n }}\n >\n <Notices feedback={feedback.state} />\n\n {#if !signature}\n <Field\n label={t(\"mail_template.subject\")}\n bind:value={subject}\n maxlength=\"150\"\n placeholder={t(\"mail_template.subject_placeholder\")}\n />\n {/if}\n\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(signature ? \"mail_template.closing\" : \"mail_template.opening\")}</span>\n <textarea\n class=\"textarea textarea-sm w-full\"\n rows=\"4\"\n maxlength=\"2000\"\n placeholder={t(signature ? \"mail_template.closing_placeholder\" : \"mail_template.opening_placeholder\")}\n bind:value={message}\n ></textarea>\n <span class=\"hint\">\n {t(\"mail_template.hint\", { names })}\n {#if !signature}{t(\"mail_template.hint_more\")}{/if}\n </span>\n </label>\n\n <div class=\"flex gap-2\">\n <button type=\"submit\" class=\"btn btn-sm btn-primary\" disabled={busy}>{t(\"mail_template.save\")}</button>\n {#if custom}\n <button type=\"button\" class=\"btn btn-sm btn-ghost\" disabled={busy} onclick={() => save(true)}>\n {t(\"mail_template.use_default\")}\n </button>\n {/if}\n </div>\n </form>\n</details>\n","<script>\n import { t } from \"./lib/copy.js\";\n import MailTemplate from \"./MailTemplate.svelte\";\n import Loader from \"./ui/Loader.svelte\";\n import Tip from \"./ui/Tip.svelte\";\n\n let { api } = $props();\n\n const PREVIEWS = `\n query MailPreviews($client: ID) {\n mailPreviews(client: $client) { key name journey heading subject from to html text }\n clients { clientId name approvedAt }\n mailTemplates { kind subject message placeholders }\n }\n `;\n\n const GROUPS = [\"sign_in\", \"manage\", \"account\", \"system\"];\n\n const templated = (key) => (key === \"invitation_organization\" ? \"invitation\" : key);\n\n let client = $state(\"\");\n let version = $state(0);\n let chosen = $state(null);\n let showing = $state(\"html\");\n\n function fit(event) {\n const frame = event.currentTarget;\n\n frame.style.height = `${frame.contentDocument.documentElement.scrollHeight}px`;\n }\n</script>\n\n<div class=\"console-page\">\n {#key `${client}:${version}`}\n <Loader load={() => api.query(PREVIEWS, { client: client || null })}>\n {#snippet children(data)}\n {@const previews = data.mailPreviews}\n {@const shown = previews.find((preview) => preview.key === chosen) ?? previews[0]}\n {@const templates = Object.fromEntries(data.mailTemplates.map((template) => [template.kind, template]))}\n {@const template = templates[templated(shown.key)]}\n\n <div class=\"mail\">\n <div class=\"mail-pick\">\n <select\n class=\"select select-sm w-full\"\n aria-label={t(\"emails.list\")}\n value={shown.key}\n onchange={(event) => (chosen = event.currentTarget.value)}\n >\n {#each GROUPS as journey (journey)}\n {@const members = previews.filter((preview) => preview.journey === journey)}\n\n {#if members.length}\n <optgroup label={t(`emails.groups.${journey}.title`)}>\n {#each members as preview (preview.key)}\n <option value={preview.key}>{preview.name}</option>\n {/each}\n </optgroup>\n {/if}\n {/each}\n </select>\n\n {#if shown.journey === \"sign_in\"}\n <select\n class=\"select select-sm w-full\"\n aria-label={t(\"emails.app\")}\n value={client}\n onchange={(event) => (client = event.currentTarget.value)}\n >\n <option value=\"\">{t(\"emails.no_app\")}</option>\n {#each data.clients as each (each.clientId)}\n <option value={each.clientId}>{each.approvedAt ? each.name : t(\"emails.not_approved\", { name: each.name })}</option>\n {/each}\n </select>\n {/if}\n </div>\n\n <nav class=\"mail-list\" aria-label={t(\"emails.list\")}>\n {#each GROUPS as journey (journey)}\n {@const members = previews.filter((preview) => preview.journey === journey)}\n\n {#if members.length}\n <div class=\"mail-group\">\n <div class=\"flex items-center gap-2\">\n <span class=\"term\">{t(`emails.groups.${journey}.title`)}</span>\n <Tip text={t(`emails.groups.${journey}.help`)} label={t(`emails.groups.${journey}.about`)} />\n </div>\n\n {#if journey === \"sign_in\"}\n <select\n class=\"select select-sm w-full\"\n aria-label={t(\"emails.app\")}\n value={client}\n onchange={(event) => (client = event.currentTarget.value)}\n >\n <option value=\"\">{t(\"emails.no_app\")}</option>\n {#each data.clients as each (each.clientId)}\n <option value={each.clientId}>{each.approvedAt ? each.name : t(\"emails.not_approved\", { name: each.name })}</option>\n {/each}\n </select>\n {/if}\n\n {#each members as preview (preview.key)}\n <button\n type=\"button\"\n class=\"mail-item\"\n aria-current={preview.key === shown.key ? \"true\" : undefined}\n onclick={() => (chosen = preview.key)}\n >\n {preview.name}\n </button>\n {/each}\n </div>\n {/if}\n {/each}\n </nav>\n\n <article class=\"mail-view\">\n <header class=\"mail-head\">\n <div class=\"flex min-w-0 flex-col gap-0.5\">\n <h2 class=\"mail-subject\">{shown.subject}</h2>\n <p class=\"hint\">\n {t(\"emails.headed\", {\n heading: shown.heading,\n from: shown.from || t(\"emails.no_sender\"),\n to: shown.to,\n })}\n </p>\n </div>\n\n <div class=\"range\" role=\"group\" aria-label={t(\"emails.part\")}>\n <button type=\"button\" aria-pressed={showing === \"html\"} onclick={() => (showing = \"html\")}>{t(\"emails.html\")}</button>\n <button type=\"button\" aria-pressed={showing === \"text\"} onclick={() => (showing = \"text\")}>{t(\"emails.text\")}</button>\n </div>\n </header>\n\n <div class=\"mail-words\">\n {#if template}\n {#key template.kind}\n <MailTemplate {api} template={template} title={shown.name} onsaved={() => version++} />\n {/key}\n {/if}\n\n <MailTemplate {api} template={templates.signature} title={t(\"emails.signature\")} onsaved={() => version++} />\n </div>\n\n {#if showing === \"html\" && shown.html}\n <iframe\n class=\"mail-frame\"\n title={shown.subject}\n sandbox=\"allow-same-origin\"\n srcdoc={shown.html}\n onload={fit}\n ></iframe>\n {:else}\n <pre class=\"mail-text\">{shown.text ?? \"\"}</pre>\n {/if}\n </article>\n </div>\n {/snippet}\n </Loader>\n {/key}\n</div>\n","<script>\n import { t } from \"./lib/copy.js\";\n import MessageSending from \"./MessageSending.svelte\";\n import MessageTemplates from \"./MessageTemplates.svelte\";\n import Link from \"./ui/Link.svelte\";\n import Page from \"./ui/Page.svelte\";\n\n let { api, part = null } = $props();\n\n const templates = $derived(part === \"templates\");\n</script>\n\n<Page title={t(\"messages.title\")} lede={t(templates ? \"messages.templates.lede\" : \"messages.sending.lede\")}>\n <nav class=\"settings-tabs\" aria-label={t(\"messages.parts\")}>\n <Link to=\"/messages\" class=\"settings-tab {templates ? '' : 'settings-tab-on'}\">{t(\"messages.sending.title\")}</Link>\n <Link to=\"/messages/templates\" class=\"settings-tab {templates ? 'settings-tab-on' : ''}\">{t(\"messages.templates.title\")}</Link>\n </nav>\n\n {#if templates}\n <MessageTemplates {api} />\n {:else}\n <MessageSending {api} />\n {/if}\n</Page>\n","<script>\n import ActivityParts from \"./ActivityParts.svelte\";\n import { createFeedback } from \"./lib/feedback.svelte.js\";\n import { t } from \"./lib/copy.js\";\n import { day } from \"./lib/format.js\";\n import Section from \"./ui/Section.svelte\";\n import Field from \"./ui/Field.svelte\";\n import Notices from \"./ui/Notices.svelte\";\n import Page from \"./ui/Page.svelte\";\n import Select from \"./ui/Select.svelte\";\n import Spinner from \"./ui/Spinner.svelte\";\n\n let { api } = $props();\n\n const FIELDS = `key name url actions lastDeliveredAt lastFailure archivedAt createdAt organization { key name }`;\n\n const QUERY = `\n query Streams {\n active: eventStreams { ${FIELDS} }\n archived: eventStreams(archived: true) { ${FIELDS} }\n organizations { key name }\n }\n `;\n\n const feedback = createFeedback();\n\n let data = $state(null);\n let loading = $state(true);\n let busy = $state(false);\n let editing = $state(null);\n let draft = $state(null);\n let secret = $state(null);\n\n async function load() {\n loading = true;\n\n const answer = await feedback.attempt(() => api.query(QUERY));\n\n loading = false;\n\n if (answer) data = answer;\n }\n\n load();\n\n const listed = (text) =>\n text\n .split(/[\\s,]+/)\n .map((held) => held.trim())\n .filter(Boolean);\n\n function add() {\n editing = \"\";\n draft = { key: \"\", name: \"\", url: \"\", actions: \"\", organization: \"\" };\n secret = null;\n feedback.clear();\n }\n\n function edit(stream) {\n editing = stream.key;\n draft = {\n key: stream.key,\n name: stream.name,\n url: stream.url,\n actions: stream.actions.join(\"\\n\"),\n organization: stream.organization?.key ?? \"\",\n };\n secret = null;\n feedback.clear();\n }\n\n function close() {\n editing = null;\n draft = null;\n feedback.clear();\n }\n\n async function save() {\n busy = true;\n\n const fresh = editing === \"\";\n const variables = {\n key: draft.key.trim(),\n name: draft.name.trim(),\n url: draft.url.trim(),\n actions: listed(draft.actions),\n organization: draft.organization,\n };\n\n const answer = await feedback.attempt(\n () =>\n fresh\n ? api.query(\n `mutation Create($key: ID!, $name: String!, $url: String!, $actions: [String!], $organization: ID) {\n createEventStream(key: $key, name: $name, url: $url, actions: $actions, organization: $organization) { secret }\n }`,\n variables,\n )\n : api.query(\n `mutation Update($key: ID!, $name: String, $url: String, $actions: [String!], $organization: ID) {\n updateEventStream(key: $key, name: $name, url: $url, actions: $actions, organization: $organization) {\n eventStream { key }\n }\n }`,\n variables,\n ),\n fresh ? t(\"streams.added\", { name: draft.name }) : t(\"streams.saved\", { name: draft.name }),\n );\n\n busy = false;\n\n if (!answer) return;\n\n secret = fresh ? answer.createEventStream.secret : null;\n\n close();\n await load();\n }\n\n async function act(mutation, stream, notice, question = null) {\n if (question && !confirm(question)) return;\n\n const done = await feedback.attempt(\n () =>\n api.query(`mutation Act($key: ID!) { ${mutation}(key: $key) { eventStream { key } } }`, {\n key: stream.key,\n }),\n notice,\n );\n\n if (done) await load();\n }\n\n async function rotate(stream) {\n if (!confirm(t(\"streams.rotate_confirm\", { name: stream.name }))) return;\n\n const answer = await feedback.attempt(() =>\n api.query(`mutation Rotate($key: ID!) { rotateEventStreamSecret(key: $key) { secret } }`, {\n key: stream.key,\n }),\n );\n\n if (answer) secret = answer.rotateEventStreamSecret.secret;\n }\n\n async function test(stream) {\n busy = true;\n\n const answer = await feedback.attempt(() =>\n api.query(`mutation Test($key: ID!) { testEventStream(key: $key) { delivered failure } }`, {\n key: stream.key,\n }),\n );\n\n busy = false;\n\n if (!answer) return;\n\n if (answer.testEventStream.delivered) {\n feedback.say(t(\"streams.tested\", { name: stream.name }));\n } else {\n feedback.blame(answer.testEventStream.failure);\n }\n\n await load();\n }\n\n const complete = $derived(draft?.key.trim() && draft.name.trim() && draft.url.trim());\n</script>\n\n<Page title={t(\"activity.title\")}>\n <ActivityParts part=\"streams\" />\n\n <Notices feedback={feedback.state} />\n\n {#if loading && !data}\n <Spinner />\n {:else if data}\n {#if secret}\n <Section\n title={t(\"streams.secret.title\")}\n lede={t(\"streams.secret.lede\")}\n >\n <input class=\"input input-sm w-full font-mono\" readonly value={secret} onfocus={(event) => event.currentTarget.select()} />\n <div>\n <button type=\"button\" class=\"btn btn-ghost btn-sm\" onclick={() => (secret = null)}>{t(\"streams.secret.saved\")}</button>\n </div>\n </Section>\n {/if}\n\n {#if draft}\n <Section title={editing === \"\" ? t(\"streams.form.add\") : t(\"streams.form.edit\", { name: draft.name })}>\n <div class=\"grid gap-3 sm:grid-cols-2\">\n <Field\n label={t(\"streams.form.key\")}\n bind:value={draft.key}\n disabled={editing !== \"\"}\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n />\n <Field label={t(\"streams.form.name\")} bind:value={draft.name} />\n </div>\n\n <Field\n label={t(\"streams.form.address\")}\n type=\"url\"\n bind:value={draft.url}\n placeholder=\"https://siem.example.com/masks\"\n autocapitalize=\"none\"\n spellcheck=\"false\"\n />\n\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"streams.form.actions\")}</span>\n <textarea\n class=\"textarea w-full font-mono\"\n rows=\"4\"\n bind:value={draft.actions}\n placeholder=\"session.started&#10;actor.deleted\"\n ></textarea>\n <p class=\"hint\">{t(\"streams.form.actions_hint\")}</p>\n </label>\n\n {#if data.organizations.length}\n <Select\n label={t(\"streams.form.events_from\")}\n value={draft.organization}\n options={[[\"\", t(\"streams.form.every_organization\")], ...data.organizations.map((held) => [held.key, t(\"streams.form.only\", { name: held.name })])]}\n onchange={(key) => (draft.organization = key)}\n />\n {/if}\n\n <div class=\"flex gap-2\">\n <button type=\"button\" class=\"btn btn-primary btn-sm\" disabled={busy || !complete} onclick={save}>\n {editing === \"\" ? t(\"streams.form.create\") : t(\"streams.form.save\")}\n </button>\n <button type=\"button\" class=\"btn btn-ghost btn-sm\" onclick={close}>{t(\"streams.form.cancel\")}</button>\n </div>\n </Section>\n {/if}\n\n <Section\n title={t(\"streams.list.title\")}\n lede={data.active.length ? t(\"streams.list.lede\") : t(\"streams.list.empty\")}\n >\n {#snippet actions()}\n <button type=\"button\" class=\"btn btn-sm\" onclick={add}>{t(\"streams.list.add\")}</button>\n {/snippet}\n\n {#each data.active as stream (stream.key)}\n <div class=\"flex flex-col gap-3 sheet p-3\">\n <div class=\"flex flex-wrap items-center justify-between gap-2\">\n <div class=\"flex min-w-0 flex-col\">\n <span class=\"font-medium\">{stream.name}</span>\n <span class=\"hint break-all\">\n <span class=\"font-mono\">{stream.key}</span> · {stream.url} · {t(\"streams.list.added\", { day: day(stream.createdAt) })}\n </span>\n <span class=\"hint\">\n {stream.actions.length ? stream.actions.join(\", \") : t(\"streams.list.every_action\")}{stream.organization\n ? t(\"streams.list.only\", { name: stream.organization.name })\n : \"\"}\n </span>\n {#if stream.lastFailure}\n <span class=\"text-sm text-error\">{stream.lastFailure}</span>\n {:else if stream.lastDeliveredAt}\n <span class=\"hint\">{t(\"streams.list.last_delivered\", { day: day(stream.lastDeliveredAt) })}</span>\n {/if}\n </div>\n\n <div class=\"flex flex-wrap gap-2\">\n <button type=\"button\" class=\"btn btn-sm\" disabled={busy} onclick={() => test(stream)}>{t(\"streams.list.test\")}</button>\n <button type=\"button\" class=\"btn btn-sm\" onclick={() => edit(stream)}>{t(\"streams.list.edit\")}</button>\n <button type=\"button\" class=\"btn btn-ghost btn-sm\" onclick={() => rotate(stream)}>{t(\"streams.list.rotate\")}</button>\n <button\n type=\"button\"\n class=\"btn btn-ghost btn-sm\"\n onclick={() =>\n act(\n \"archiveEventStream\",\n stream,\n t(\"streams.archived_notice\", { name: stream.name }),\n t(\"streams.archive_confirm\", { name: stream.name }),\n )}\n >\n {t(\"streams.list.archive\")}\n </button>\n </div>\n </div>\n </div>\n {/each}\n </Section>\n\n {#if data.archived.length}\n <Section title={t(\"streams.archived.title\")}>\n {#each data.archived as stream (stream.key)}\n <div class=\"flex flex-wrap items-center justify-between gap-2\">\n <span class=\"text-sm\">{stream.name} <span class=\"hint\">{stream.url}</span></span>\n <button\n type=\"button\"\n class=\"btn btn-ghost btn-sm\"\n onclick={() => act(\"restoreEventStream\", stream, t(\"streams.restored\", { name: stream.name }))}\n >\n {t(\"streams.archived.restore\")}\n </button>\n </div>\n {/each}\n </Section>\n {/if}\n {/if}\n</Page>\n","<script>\n import { t } from \"./lib/copy.js\";\n import { createFeedback } from \"./lib/feedback.svelte.js\";\n import Field from \"./ui/Field.svelte\";\n import Notices from \"./ui/Notices.svelte\";\n import Section from \"./ui/Section.svelte\";\n import Select from \"./ui/Select.svelte\";\n import Switch from \"./ui/Switch.svelte\";\n\n let { api } = $props();\n\n const QUERY = `\n query SignInRules {\n tenant { namedBy browsersOnly blockedAgents riskyNetworks suspendAfter deleteAfter signInPolicy { key } }\n signInPolicies { key name }\n }\n `;\n\n const SUSPEND_AFTER = [\n [0, t(\"settings.idle.never\")],\n [90, t(\"settings.idle.after_90_days\")],\n [180, t(\"settings.idle.after_180_days\")],\n [365, t(\"settings.idle.after_a_year\")],\n [730, t(\"settings.idle.after_two_years\")],\n ];\n\n const DELETE_AFTER = [\n [0, t(\"settings.idle.never\")],\n [180, t(\"settings.idle.after_180_days\")],\n [365, t(\"settings.idle.after_a_year\")],\n [730, t(\"settings.idle.after_two_years\")],\n [1095, t(\"settings.idle.after_three_years\")],\n ];\n\n const choices = (listed, held) =>\n !held || listed.some(([days]) => days === held) ? listed : [...listed, [held, t(\"settings.after_days\", { days: held })]];\n\n const feedback = createFeedback();\n\n let data = $state(null);\n let agents = $state(\"\");\n let networks = $state(\"\");\n\n async function load() {\n const answer = await feedback.attempt(() => api.query(QUERY));\n\n if (!answer) return;\n\n data = answer;\n agents = answer.tenant.blockedAgents ?? \"\";\n networks = answer.tenant.riskyNetworks ?? \"\";\n }\n\n load();\n\n async function update(changes, notice) {\n const done = await feedback.attempt(\n () =>\n api.query(\n `mutation Update(\n $namedBy: String, $browsersOnly: Boolean, $blockedAgents: String, $signInPolicy: ID,\n $riskyNetworks: String, $suspendAfter: Int, $deleteAfter: Int\n ) {\n updateTenant(\n namedBy: $namedBy\n browsersOnly: $browsersOnly\n blockedAgents: $blockedAgents\n riskyNetworks: $riskyNetworks\n signInPolicy: $signInPolicy\n suspendAfter: $suspendAfter\n deleteAfter: $deleteAfter\n ) { tenant { name } }\n }`,\n changes,\n ),\n notice,\n );\n\n if (done) await load();\n }\n\n function deleteAfter(days) {\n if (days && !confirm(t(\"settings.idle.delete_confirm\"))) return load();\n\n return update({ deleteAfter: days }, t(\"settings.idle.updated\"));\n }\n</script>\n\n<Notices feedback={feedback.state} />\n\n{#if data}\n <Section\n row\n title={t(\"settings.naming.title\")}\n help={t(\"settings.naming.help\")}\n >\n <Select\n value={data.tenant.namedBy}\n options={[\n [\"nickname\", t(\"settings.naming.nickname\")],\n [\"email\", t(\"settings.naming.email\")],\n [\"either\", t(\"settings.naming.either\")],\n ]}\n onchange={(namedBy) => update({ namedBy }, t(\"settings.naming.updated\"))}\n />\n </Section>\n\n <Section\n row\n title={t(\"settings.policy.title\")}\n help={t(\"settings.policy.help\")}\n >\n <Select\n value={data.tenant.signInPolicy?.key ?? \"\"}\n options={[[\"\", t(\"settings.policy.built_in\")], ...data.signInPolicies.map((policy) => [policy.key, policy.name])]}\n onchange={(signInPolicy) => update({ signInPolicy }, t(\"settings.policy.updated\"))}\n />\n </Section>\n\n <Section\n row\n title={t(\"settings.access.title\")}\n help={t(\"settings.access.help\")}\n >\n <Switch\n label={t(\"settings.access.browsers_only\")}\n checked={data.tenant.browsersOnly}\n onchange={(browsersOnly) =>\n update({ browsersOnly }, t(\"settings.access.updated\"))}\n />\n\n <Field\n label={t(\"settings.access.refused_agents\")}\n bind:value={agents}\n placeholder=\"curl, python-requests\"\n onsave={() => update({ blockedAgents: agents }, t(\"settings.access.updated\"))}\n />\n\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"settings.access.risky_networks\")}</span>\n <textarea class=\"textarea w-full font-mono\" rows=\"3\" bind:value={networks} placeholder=\"203.0.113.0/24\"></textarea>\n <span class=\"hint\">\n {t(\"settings.access.risky_hint\")}\n </span>\n </label>\n <div>\n <button type=\"button\" class=\"btn btn-sm\" onclick={() => update({ riskyNetworks: networks }, t(\"settings.access.networks_saved\"))}>\n {t(\"settings.access.save_networks\")}\n </button>\n </div>\n </Section>\n\n <Section\n row\n title={t(\"settings.idle.title\")}\n help={t(\"settings.idle.help\")}\n >\n <div class=\"grid max-w-xl gap-3 sm:grid-cols-2\">\n <Select\n label={t(\"settings.idle.suspend\")}\n value={data.tenant.suspendAfter ?? 0}\n options={choices(SUSPEND_AFTER, data.tenant.suspendAfter)}\n onchange={(days) => update({ suspendAfter: Number(days) }, t(\"settings.idle.updated\"))}\n />\n\n <Select\n label={t(\"settings.idle.delete\")}\n value={data.tenant.deleteAfter ?? 0}\n options={choices(DELETE_AFTER, data.tenant.deleteAfter).map(([days, label]) => [\n days,\n label,\n days > 0 && days <= (data.tenant.suspendAfter ?? 0),\n ])}\n onchange={(days) => deleteAfter(Number(days))}\n />\n </div>\n </Section>\n{/if}\n","<script>\n import SignInRules from \"./SignInRules.svelte\";\n import { createFeedback } from \"./lib/feedback.svelte.js\";\n import ScopesEditor from \"./ScopesEditor.svelte\";\n import Section from \"./ui/Section.svelte\";\n import Field from \"./ui/Field.svelte\";\n import Link from \"./ui/Link.svelte\";\n import Notices from \"./ui/Notices.svelte\";\n import Page from \"./ui/Page.svelte\";\n import Spinner from \"./ui/Spinner.svelte\";\n import Switch from \"./ui/Switch.svelte\";\n import { t } from \"./lib/copy.js\";\n import { duration } from \"./lib/policies.js\";\n\n let { api } = $props();\n\n const FIELDS = `\n key name signup nickname email emailVerified phone phoneVerified\n passwordMinimum refuseCommonPasswords passwordRequired firstFactors secondFactors secondFactorRequired appsRequireSecondFactor\n sessionLifetime sessionIdleTimeout refuseBreachedPasswords riskStepUpAt riskRefuseAt proofOfWork\n emailDomains providers confirmation hidden signupScopes default archivedAt\n clients { clientId name }\n `;\n\n const QUERY = `\n query Policies {\n active: signInPolicies { ${FIELDS} }\n archived: signInPolicies(archived: true) { ${FIELDS} }\n providers { key name }\n tenant { namedBy texts mails }\n scopesSupported\n }\n `;\n\n const ARGS = `\n $key: ID!, $name: String, $signup: Boolean, $nickname: String, $email: String,\n $emailVerified: Boolean, $phone: String, $phoneVerified: Boolean, $passwordMinimum: Int,\n $refuseCommonPasswords: Boolean, $passwordRequired: Boolean, $firstFactors: [String!], $secondFactors: [String!],\n $secondFactorRequired: Boolean, $appsRequireSecondFactor: Boolean,\n $sessionLifetime: Int, $sessionIdleTimeout: Int,\n $refuseBreachedPasswords: Boolean, $riskStepUpAt: Int, $riskRefuseAt: Int, $proofOfWork: Int, $emailDomains: [String!], $providers: [String!],\n $everyProvider: Boolean, $confirmation: String, $hidden: Boolean, $signupScopes: [String!]\n `;\n\n const PASS = `\n key: $key, name: $name, signup: $signup, nickname: $nickname, email: $email,\n emailVerified: $emailVerified, phone: $phone, phoneVerified: $phoneVerified,\n passwordMinimum: $passwordMinimum, refuseCommonPasswords: $refuseCommonPasswords, passwordRequired: $passwordRequired,\n firstFactors: $firstFactors, secondFactors: $secondFactors,\n secondFactorRequired: $secondFactorRequired, appsRequireSecondFactor: $appsRequireSecondFactor,\n sessionLifetime: $sessionLifetime, sessionIdleTimeout: $sessionIdleTimeout,\n refuseBreachedPasswords: $refuseBreachedPasswords, riskStepUpAt: $riskStepUpAt, riskRefuseAt: $riskRefuseAt, proofOfWork: $proofOfWork, emailDomains: $emailDomains,\n providers: $providers, everyProvider: $everyProvider, confirmation: $confirmation,\n hidden: $hidden, signupScopes: $signupScopes\n `;\n\n const HOUR = 3600;\n const DAY = 24 * HOUR;\n\n const LIFETIMES = [\n [null, t(\"policy_rules.values.default_lifetime\")],\n ...[HOUR, 8 * HOUR, 12 * HOUR, DAY, 7 * DAY, 30 * DAY, 90 * DAY].map((seconds) => [seconds, duration(seconds)]),\n ];\n\n const IDLE = [\n [null, t(\"policies.never\")],\n ...[15 * 60, 30 * 60, HOUR, 4 * HOUR, DAY].map((seconds) => [seconds, duration(seconds)]),\n ];\n\n const SCORES = [[null, t(\"policies.never\")], ...[30, 50, 70, 90].map((score) => [score, t(\"policies.score\", { score })])];\n\n const WORK = [\n [0, t(\"policies.form.signup.work_off\")],\n [14, t(\"policies.form.signup.work_light\")],\n [17, t(\"policies.form.signup.work_standard\")],\n [20, t(\"policies.form.signup.work_strong\")],\n ];\n\n const offeredWork = (value) =>\n WORK.some(([held]) => held === value) ? WORK : [...WORK, [value, t(\"policies.form.signup.work_bits\", { bits: value })]];\n\n const offered = (choices, value) =>\n value === null || choices.some(([held]) => held === value)\n ? choices\n : [...choices, [value, t(\"policy_rules.units.second\", { count: value })]];\n\n const labelled = (group, values) => values.map((value) => [value, t(`policies.${group}.${value}`)]);\n\n const PRESENCE = labelled(\"presence\", [\"off\", \"optional\", \"required\"]);\n\n const FIRST = labelled(\"first\", [\"password\", \"passkey\", \"provider\", \"email_code\"]);\n\n const SECOND = labelled(\"second\", [\"otp\", \"passkey\", \"backup_codes\", \"email\", \"sms\", \"trusted_device\"]);\n\n const CONFIRMATIONS = labelled(\"confirmations\", [\"none\", \"code\", \"link\", \"approval\"]);\n\n const ACCOUNT_FIELDS = [\"nickname\", \"email\", \"phone\"].map((field) => [field, t(`policies.form.account.${field}`)]);\n\n const BLANK = {\n key: \"\",\n name: \"\",\n signup: false,\n nickname: \"optional\",\n email: \"required\",\n emailVerified: false,\n phone: \"off\",\n phoneVerified: false,\n passwordMinimum: 8,\n refuseCommonPasswords: true,\n passwordRequired: false,\n firstFactors: [\"password\", \"passkey\", \"provider\"],\n secondFactors: [\"otp\", \"passkey\", \"backup_codes\"],\n secondFactorRequired: false,\n appsRequireSecondFactor: false,\n sessionLifetime: null,\n sessionIdleTimeout: null,\n refuseBreachedPasswords: false,\n riskStepUpAt: null,\n riskRefuseAt: null,\n proofOfWork: 17,\n emailDomains: \"\",\n providers: null,\n confirmation: \"none\",\n hidden: false,\n signupScopes: [],\n };\n\n const feedback = createFeedback();\n\n let data = $state(null);\n let loading = $state(true);\n let busy = $state(false);\n let editing = $state(null);\n let draft = $state({ ...BLANK });\n\n async function load() {\n loading = true;\n\n const answer = await feedback.attempt(() => api.query(QUERY));\n\n loading = false;\n\n if (answer) data = answer;\n }\n\n load();\n\n function add() {\n editing = \"\";\n keyTouched = false;\n draft = structuredClone(BLANK);\n feedback.clear();\n }\n\n function edit(policy) {\n editing = policy.key;\n draft = {\n ...structuredClone($state.snapshot(policy)),\n emailDomains: policy.emailDomains.join(\" \"),\n };\n feedback.clear();\n }\n\n const slug = (name) =>\n name\n .toLowerCase()\n .normalize(\"NFKD\")\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\");\n\n let keyTouched = $state(false);\n\n function named(name) {\n draft.name = name;\n if (editing === \"\" && !keyTouched) draft.key = slug(name);\n }\n\n function close() {\n editing = null;\n feedback.clear();\n }\n\n const toggle = (list, value, on) =>\n on ? [...new Set([...list, value])] : list.filter((held) => held !== value);\n\n function variables() {\n return {\n key: draft.key.trim(),\n name: draft.name.trim(),\n signup: draft.signup,\n nickname: draft.nickname,\n email: draft.email,\n emailVerified: draft.emailVerified,\n phone: draft.phone,\n phoneVerified: draft.phoneVerified,\n passwordMinimum: Number(draft.passwordMinimum) || 8,\n refuseCommonPasswords: draft.refuseCommonPasswords,\n passwordRequired: draft.passwordRequired && draft.firstFactors.includes(\"password\"),\n firstFactors: draft.firstFactors,\n secondFactors: draft.secondFactors,\n secondFactorRequired: draft.secondFactorRequired,\n appsRequireSecondFactor: draft.appsRequireSecondFactor,\n sessionLifetime: draft.sessionLifetime,\n sessionIdleTimeout: draft.sessionIdleTimeout,\n refuseBreachedPasswords: draft.refuseBreachedPasswords,\n riskStepUpAt: draft.riskStepUpAt,\n riskRefuseAt: draft.riskRefuseAt,\n proofOfWork: Number(draft.proofOfWork) || 0,\n emailDomains: draft.emailDomains.split(/[\\s,]+/).filter(Boolean),\n providers: draft.providers ?? [],\n everyProvider: draft.providers === null,\n confirmation: draft.confirmation,\n hidden: draft.hidden,\n signupScopes: draft.signupScopes,\n };\n }\n\n async function save() {\n busy = true;\n\n const fresh = editing === \"\";\n const done = await feedback.attempt(\n () =>\n api.query(\n fresh\n ? `mutation Create(${ARGS}) { createSignInPolicy(${PASS}) { signInPolicy { key } } }`\n : `mutation Update(${ARGS}) { updateSignInPolicy(${PASS}) { signInPolicy { key } } }`,\n variables(),\n ),\n fresh ? t(\"policies.added\", { name: draft.name }) : t(\"policies.saved\", { name: draft.name }),\n );\n\n busy = false;\n\n if (!done) return;\n\n editing = null;\n await load();\n }\n\n async function act(mutation, policy, notice, question = null) {\n if (question && !confirm(question)) return;\n\n const done = await feedback.attempt(\n () =>\n api.query(`mutation Act($key: ID!) { ${mutation}(key: $key) { signInPolicy { key } } }`, {\n key: policy.key,\n }),\n notice,\n );\n\n if (done) await load();\n }\n\n const summary = (policy) =>\n [\n policy.signup ? t(\"policies.summary.signup_open\") : t(\"policies.summary.invitation_only\"),\n policy.secondFactorRequired ? t(\"policies.summary.second_factor_required\") : null,\n policy.appsRequireSecondFactor ? t(\"policies.summary.apps_require_second_factor\") : null,\n policy.sessionLifetime ? t(\"policies.summary.lifetime\", { duration: duration(policy.sessionLifetime) }) : null,\n policy.sessionIdleTimeout ? t(\"policies.summary.idle\", { duration: duration(policy.sessionIdleTimeout) }) : null,\n policy.confirmation !== \"none\" ? t(\"policies.summary.confirmed_by\", { confirmation: policy.confirmation }) : null,\n policy.phone === \"required\" ? t(\"policies.summary.phone_required\") : null,\n policy.hidden ? t(\"policies.summary.hidden\") : null,\n ]\n .filter(Boolean)\n .join(\" · \");\n\n const signingProviders = $derived(data?.providers ?? []);\n</script>\n\n<Page title={t(\"policies.title\")}>\n {#snippet actions()}\n {#if editing === null}\n <button type=\"button\" class=\"btn btn-primary btn-sm\" onclick={add}>{t(\"policies.add\")}</button>\n {/if}\n {/snippet}\n\n <Notices feedback={feedback.state} />\n\n {#if loading && !data}\n <Spinner />\n {:else if data}\n {#if editing !== null}\n <Section title={editing === \"\" ? t(\"policies.form.new\") : draft.name}>\n <div class=\"grid gap-3 sm:grid-cols-[2fr_1fr]\">\n <Field\n label={t(\"policies.form.name\")}\n value={draft.name}\n oninput={(event) => named(event.currentTarget.value)}\n placeholder={t(\"policies.form.name_placeholder\")}\n />\n <Field\n label={t(\"policies.form.key\")}\n bind:value={draft.key}\n oninput={() => (keyTouched = true)}\n disabled={editing !== \"\"}\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n class=\"input input-sm w-full font-mono\"\n />\n </div>\n\n <div class=\"policy-rows\">\n <div class=\"policy-row\">\n <span class=\"legend\">{t(\"policies.form.signup.legend\")}</span>\n <div class=\"policy-controls\">\n <Switch label={t(\"policies.form.signup.open\")} bind:checked={draft.signup} />\n\n {#if draft.signup}\n <div class=\"grid gap-3 sm:grid-cols-2\">\n <Field\n label={t(\"policies.form.signup.email_domains\")}\n bind:value={draft.emailDomains}\n autocapitalize=\"none\"\n spellcheck=\"false\"\n placeholder={t(\"policies.form.signup.email_domains_placeholder\")}\n />\n\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"policies.form.signup.confirmation\")}</span>\n <select class=\"select select-sm w-full\" bind:value={draft.confirmation}>\n {#each CONFIRMATIONS as [value, label] (value)}\n <option {value}>{label}</option>\n {/each}\n </select>\n </label>\n\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"policies.form.signup.work\")}</span>\n <select class=\"select select-sm w-full\" bind:value={draft.proofOfWork}>\n {#each offeredWork(draft.proofOfWork) as [value, label] (value)}\n <option {value}>{label}</option>\n {/each}\n </select>\n </label>\n </div>\n\n <p class=\"hint\">{t(\"policies.form.signup.work_hint\")}</p>\n\n {#if (draft.confirmation === \"code\" || draft.confirmation === \"link\") && !data.tenant.mails}\n <p class=\"text-xs text-warning\">\n {t(\"policies.form.signup.no_mail\")} <Link to=\"/messages\" class=\"link\">{t(\"policies.form.add_one\")}</Link>\n </p>\n {/if}\n\n <div class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"policies.form.signup.scopes\")}</span>\n <ScopesEditor\n value={draft.signupScopes}\n available={data.scopesSupported.filter((scope) => !scope.startsWith(\"masks:\"))}\n onchange={(scopes) => (draft.signupScopes = scopes)}\n />\n </div>\n {/if}\n\n <Switch label={t(\"policies.form.signup.hidden\")} bind:checked={draft.hidden} />\n\n {#if draft.hidden}\n <p class=\"text-xs opacity-85\">\n {t(\"policies.form.signup.hidden_hint\")}\n </p>\n {#if !data.tenant.mails}\n <p class=\"text-xs text-warning\">\n {t(\"policies.form.signup.hidden_no_mail\")}\n <Link to=\"/messages\" class=\"link\">{t(\"policies.form.add_one\")}</Link>\n </p>\n {/if}\n {:else if draft.signup}\n <p class=\"text-xs text-warning\">\n {t(\"policies.form.signup.open_warning\")}\n </p>\n {/if}\n </div>\n </div>\n\n <div class=\"policy-row\">\n <span class=\"legend\">{t(\"policies.form.account.legend\")}</span>\n <div class=\"policy-controls\">\n <div class=\"grid gap-3 sm:grid-cols-3\">\n {#each ACCOUNT_FIELDS as [field, label] (field)}\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{label}</span>\n <select class=\"select select-sm w-full\" bind:value={draft[field]}>\n {#each PRESENCE as [value, text] (value)}\n <option {value}>{text}</option>\n {/each}\n </select>\n </label>\n {/each}\n </div>\n\n <div class=\"flex flex-wrap gap-x-5 gap-y-2\">\n <Switch label={t(\"policies.form.account.email_verified\")} bind:checked={draft.emailVerified} />\n <Switch label={t(\"policies.form.account.phone_verified\")} bind:checked={draft.phoneVerified} />\n </div>\n\n {#if draft.phone !== \"off\" && draft.phoneVerified && !data.tenant.texts}\n <p class=\"text-xs text-warning\">\n {t(\"policies.form.account.no_sms\")} <Link to=\"/messages\" class=\"link\">{t(\"policies.form.add_one\")}</Link>\n </p>\n {/if}\n </div>\n </div>\n\n <div class=\"policy-row\">\n <span class=\"legend\">{t(\"policies.form.sign_in.legend\")}</span>\n <div class=\"policy-controls\">\n <div class=\"flex flex-wrap gap-x-5 gap-y-2\">\n {#each FIRST as [value, label] (value)}\n <Switch\n label={label}\n checked={draft.firstFactors.includes(value)}\n onchange={(on) => (draft.firstFactors = toggle(draft.firstFactors, value, on))}\n />\n {/each}\n </div>\n\n {#if draft.firstFactors.includes(\"password\")}\n <div class=\"flex flex-wrap items-center gap-x-5 gap-y-2\">\n <label class=\"flex items-center gap-2 text-sm\">\n <input class=\"input input-sm w-16\" type=\"number\" min=\"8\" bind:value={draft.passwordMinimum} />\n {t(\"policies.form.sign_in.characters\")}\n </label>\n <Switch label={t(\"policies.form.sign_in.refuse_common\")} bind:checked={draft.refuseCommonPasswords} />\n {#if draft.firstFactors.includes(\"passkey\")}\n <Switch label={t(\"policies.form.sign_in.password_required\")} bind:checked={draft.passwordRequired} />\n {/if}\n </div>\n {/if}\n\n {#if draft.firstFactors.includes(\"provider\") && signingProviders.length}\n <div class=\"flex flex-wrap gap-x-5 gap-y-2\">\n <Switch\n label={t(\"policies.form.sign_in.all_providers\")}\n checked={draft.providers === null}\n onchange={(on) => (draft.providers = on ? null : signingProviders.map((held) => held.key))}\n />\n\n {#if draft.providers !== null}\n {#each signingProviders as provider (provider.key)}\n <Switch\n label={provider.name}\n checked={draft.providers.includes(provider.key)}\n onchange={(on) => (draft.providers = toggle(draft.providers, provider.key, on))}\n />\n {/each}\n {/if}\n </div>\n {/if}\n </div>\n </div>\n\n <div class=\"policy-row\">\n <span class=\"legend\">{t(\"policies.form.second_factor.legend\")}</span>\n <div class=\"policy-controls\">\n <div class=\"flex flex-wrap gap-x-5 gap-y-2\">\n {#each SECOND as [value, label] (value)}\n <Switch\n label={label}\n checked={draft.secondFactors.includes(value)}\n onchange={(on) => (draft.secondFactors = toggle(draft.secondFactors, value, on))}\n />\n {/each}\n </div>\n\n <Switch label={t(\"policies.form.second_factor.required\")} bind:checked={draft.secondFactorRequired} />\n <Switch\n label={t(\"policies.form.second_factor.apps\")}\n bind:checked={draft.appsRequireSecondFactor}\n />\n </div>\n </div>\n\n <div class=\"policy-row\">\n <span class=\"legend\">{t(\"policies.form.risk.legend\")}</span>\n <div class=\"policy-controls\">\n <div class=\"flex flex-wrap items-center gap-x-5 gap-y-2\">\n <label class=\"flex items-center gap-2 text-sm\">\n {t(\"policies.form.risk.step_up\")}\n <select class=\"select select-sm w-auto\" bind:value={draft.riskStepUpAt}>\n {#each offered(SCORES, draft.riskStepUpAt) as [value, label] (value)}\n <option {value}>{label}</option>\n {/each}\n </select>\n </label>\n <label class=\"flex items-center gap-2 text-sm\">\n {t(\"policies.form.risk.refuse\")}\n <select class=\"select select-sm w-auto\" bind:value={draft.riskRefuseAt}>\n {#each offered(SCORES, draft.riskRefuseAt) as [value, label] (value)}\n <option {value}>{label}</option>\n {/each}\n </select>\n </label>\n </div>\n <Switch label={t(\"policies.form.risk.refuse_breached\")} bind:checked={draft.refuseBreachedPasswords} />\n <p class=\"hint\">\n {t(\"policies.form.risk.hint\")}\n </p>\n </div>\n </div>\n\n <div class=\"policy-row\">\n <span class=\"legend\">{t(\"policies.form.sessions.legend\")}</span>\n <div class=\"policy-controls\">\n <div class=\"flex flex-wrap items-center gap-x-5 gap-y-2\">\n <label class=\"flex items-center gap-2 text-sm\">\n {t(\"policies.form.sessions.last\")}\n <select class=\"select select-sm w-auto\" bind:value={draft.sessionLifetime}>\n {#each offered(LIFETIMES, draft.sessionLifetime) as [value, label] (value)}\n <option {value}>{label}</option>\n {/each}\n </select>\n {t(\"policies.form.sessions.after_sign_in\")}\n </label>\n <label class=\"flex items-center gap-2 text-sm\">\n {t(\"policies.form.sessions.end_after\")}\n <select class=\"select select-sm w-auto\" bind:value={draft.sessionIdleTimeout}>\n {#each offered(IDLE, draft.sessionIdleTimeout) as [value, label] (value)}\n <option {value}>{label}</option>\n {/each}\n </select>\n {t(\"policies.form.sessions.idle\")}\n </label>\n </div>\n <p class=\"hint\">\n {t(\"policies.form.sessions.hint\")}\n </p>\n </div>\n </div>\n </div>\n\n <div class=\"flex gap-2\">\n <button\n type=\"button\"\n class=\"btn btn-primary btn-sm\"\n disabled={busy || !draft.key.trim() || !draft.name.trim()}\n onclick={save}\n >\n {editing === \"\" ? t(\"policies.form.create\") : t(\"policies.form.save\")}\n </button>\n <button type=\"button\" class=\"btn btn-ghost btn-sm\" onclick={close}>{t(\"policies.form.cancel\")}</button>\n </div>\n </Section>\n {/if}\n\n <Section>\n {#if data.active.length === 0}\n <p class=\"text-sm opacity-85\">{t(\"policies.list.empty\")}</p>\n {/if}\n\n {#each data.active as policy (policy.key)}\n <div class=\"flex flex-wrap items-start justify-between gap-2 border-b border-base-300 pb-3 last:border-0 last:pb-0\">\n <div class=\"flex min-w-0 flex-col gap-1\">\n <span class=\"font-medium\">\n {policy.name}\n {#if policy.default}<span class=\"badge badge-success badge-sm\">{t(\"policies.list.default\")}</span>{/if}\n </span>\n <span class=\"hint\">{summary(policy)}</span>\n {#if policy.clients.length}\n <span class=\"hint\">\n {t(\"policies.list.used_by\")}\n {#each policy.clients as client, index (client.clientId)}\n {index ? \", \" : \"\"}<Link to={`/clients/${client.clientId}`} class=\"link\">{client.name}</Link>\n {/each}\n </span>\n {/if}\n </div>\n\n <div class=\"flex gap-2\">\n <button type=\"button\" class=\"btn btn-sm\" onclick={() => edit(policy)}>{t(\"policies.list.edit\")}</button>\n {#if !policy.default}\n <button\n type=\"button\"\n class=\"btn btn-ghost btn-sm\"\n onclick={() =>\n act(\n \"archiveSignInPolicy\",\n policy,\n t(\"policies.archived_notice\", { name: policy.name }),\n t(\"policies.archive_confirm\", { name: policy.name }),\n )}\n >\n {t(\"policies.list.archive\")}\n </button>\n {/if}\n </div>\n </div>\n {/each}\n </Section>\n\n {#if editing === null}\n {#key data}\n <SignInRules {api} />\n {/key}\n {/if}\n\n {#if data.archived.length}\n <Section title={t(\"policies.archived.title\")}>\n {#each data.archived as policy (policy.key)}\n <div class=\"flex items-center justify-between gap-2\">\n <span class=\"text-sm\">{policy.name}</span>\n <button\n type=\"button\"\n class=\"btn btn-ghost btn-sm\"\n onclick={() => act(\"restoreSignInPolicy\", policy, t(\"policies.restored\", { name: policy.name }))}\n >\n {t(\"policies.archived.restore\")}\n </button>\n </div>\n {/each}\n </Section>\n {/if}\n {/if}\n</Page>\n","<script>\n import { t } from \"./lib/copy.js\";\n import { createFeedback } from \"./lib/feedback.svelte.js\";\n import { since } from \"./lib/format.js\";\n import Section from \"./ui/Section.svelte\";\n import Notices from \"./ui/Notices.svelte\";\n import Switch from \"./ui/Switch.svelte\";\n\n let { api } = $props();\n\n const QUERY = `\n query Ldap {\n ldapBaseDn\n ldapPort\n ldapTls\n ldapLocalOnly\n ldapCredentials { id label bindDn usedAt createdAt issuedBy { identifier } client { clientId name } }\n clients(limit: 200) { clientId name appPasswords }\n tenant { ldapEnabled ldapPasswordOnly }\n }\n `;\n\n const feedback = createFeedback();\n\n let data = $state(null);\n let label = $state(\"\");\n let clientId = $state(\"\");\n let issued = $state(null);\n\n async function load() {\n try {\n data = await api.query(QUERY);\n } catch (thrown) {\n feedback.blame(thrown);\n }\n }\n\n load();\n\n async function issue() {\n const done = await feedback.attempt(() =>\n api.query(\n `mutation Issue($label: String!, $clientId: ID) {\n issueLdapCredential(label: $label, clientId: $clientId) { secret ldapCredential { bindDn } }\n }`,\n { label: label.trim(), clientId: clientId || null },\n ),\n );\n\n if (!done) return;\n\n issued = done.issueLdapCredential;\n label = \"\";\n clientId = \"\";\n\n await load();\n }\n\n async function revoke(credential) {\n if (!confirm(t(\"ldap.revoke_confirm\", { label: credential.label }))) return;\n\n const done = await feedback.attempt(\n () =>\n api.query(`mutation Revoke($id: ID!) { revokeLdapCredential(id: $id) { ldapCredential { id } } }`, {\n id: credential.id,\n }),\n t(\"ldap.revoked\", { label: credential.label }),\n );\n\n if (done) await load();\n }\n\n async function serve(ldapEnabled) {\n const done = await feedback.attempt(\n () =>\n api.query(\n `mutation Serve($ldapEnabled: Boolean) {\n updateTenant(ldapEnabled: $ldapEnabled) { tenant { ldapEnabled } }\n }`,\n { ldapEnabled },\n ),\n t(\"ldap.serve.updated\"),\n );\n\n if (done) await load();\n }\n\n async function passwordOnly(ldapPasswordOnly) {\n const done = await feedback.attempt(\n () =>\n api.query(\n `mutation PasswordOnly($ldapPasswordOnly: Boolean) {\n updateTenant(ldapPasswordOnly: $ldapPasswordOnly) { tenant { ldapPasswordOnly } }\n }`,\n { ldapPasswordOnly },\n ),\n t(\"ldap.binds.updated\"),\n );\n\n if (done) await load();\n }\n</script>\n\n<Section row title={t(\"ldap.title\")} help={`${t(\"ldap.lede\")} ${t(\"ldap.serve.help\")}`}>\n <Notices feedback={feedback.state} />\n\n {#if data}\n <Switch label={t(\"ldap.serve.on\")} checked={data.tenant.ldapEnabled} onchange={serve} />\n\n {#if data.tenant.ldapEnabled}\n <dl class=\"ldap-facts\">\n <dt class=\"field-label\">{t(\"ldap.connect.address\")}</dt>\n <dd><code class=\"font-mono text-xs\">{t(data.ldapTls ? \"ldap.connect.ldaps\" : \"ldap.connect.port\", { port: data.ldapPort })}</code></dd>\n <dt class=\"field-label\">{t(\"ldap.connect.base_dn\")}</dt>\n <dd><code class=\"font-mono text-xs break-all\">{data.ldapBaseDn}</code></dd>\n </dl>\n\n {#if data.ldapLocalOnly}\n <p class=\"hint\">{t(\"ldap.connect.local_only\")}</p>\n {/if}\n\n {#if data.ldapCredentials.length}\n <ul class=\"compact-list\">\n {#each data.ldapCredentials as credential (credential.id)}\n <li>\n <div class=\"min-w-0\">\n <div class=\"text-sm font-medium\">{credential.label}</div>\n <code class=\"hint font-mono text-xs break-all\">{credential.bindDn}</code>\n {#if credential.client}\n <div class=\"hint\">{t(\"ldap.credentials.app\", { name: credential.client.name })}</div>\n {/if}\n <div class=\"hint text-xs\">\n {t(\"ldap.credentials.used\", { used: since(credential.usedAt, t(\"ldap.credentials.never\")) })}\n </div>\n </div>\n <button type=\"button\" class=\"btn btn-ghost btn-xs ml-auto\" onclick={() => revoke(credential)}>\n {t(\"ldap.credentials.revoke\")}\n </button>\n </li>\n {/each}\n </ul>\n {/if}\n\n <form\n class=\"join\"\n onsubmit={(event) => {\n event.preventDefault();\n issue();\n }}\n >\n <input class=\"input input-sm join-item w-full max-w-48\" aria-label={t(\"ldap.connect.label\")} placeholder=\"jellyfin\" bind:value={label} />\n <select class=\"select select-sm join-item w-full max-w-48\" aria-label={t(\"ldap.connect.app\")} bind:value={clientId}>\n <option value=\"\">{t(\"ldap.connect.no_app\")}</option>\n {#each data.clients as client (client.clientId)}\n <option value={client.clientId}>{client.name}</option>\n {/each}\n </select>\n <button type=\"submit\" class=\"btn btn-sm join-item\" disabled={!label.trim()}>{t(\"ldap.connect.issue\")}</button>\n </form>\n <p class=\"hint\">{t(\"ldap.connect.help\")}</p>\n <p class=\"hint\">{t(\"ldap.connect.app_help\")}</p>\n\n {#if issued}\n <div class=\"alert alert-warning alert-soft flex-col items-start gap-2\" role=\"status\">\n <span class=\"font-medium\">{t(\"ldap.connect.shown_once\")}</span>\n <span class=\"text-xs\">{t(\"ldap.connect.bind_dn\")}</span>\n <code class=\"font-mono text-xs break-all\">{issued.ldapCredential.bindDn}</code>\n <span class=\"text-xs\">{t(\"ldap.connect.secret\")}</span>\n <code class=\"font-mono text-xs break-all\">{issued.secret}</code>\n </div>\n {/if}\n\n <Switch label={t(\"ldap.binds.password_only\")} checked={data.tenant.ldapPasswordOnly} onchange={passwordOnly} />\n <p class=\"hint\">{t(\"ldap.binds.help\")}</p>\n {/if}\n {/if}\n</Section>\n","<script>\n import { t } from \"./lib/copy.js\";\n import { createFeedback } from \"./lib/feedback.svelte.js\";\n import { day, since } from \"./lib/format.js\";\n import Section from \"./ui/Section.svelte\";\n import Field from \"./ui/Field.svelte\";\n import Notices from \"./ui/Notices.svelte\";\n import Select from \"./ui/Select.svelte\";\n\n let { api } = $props();\n\n const QUERY = `\n query Provisioning {\n scimBaseUrl\n provisioningTokens { id label usedAt expiresAt createdAt issuedBy { identifier } organization { name } }\n organizations { key name }\n }\n `;\n\n const LIFETIMES = [\n [30, \"month\"],\n [90, \"quarter\"],\n [365, \"year\"],\n ];\n\n const DAY = 86400;\n\n const feedback = createFeedback();\n\n let data = $state(null);\n let label = $state(\"\");\n let organization = $state(\"\");\n let lifetime = $state(90);\n let issued = $state(null);\n\n async function load() {\n try {\n data = await api.query(QUERY);\n } catch (thrown) {\n feedback.blame(thrown);\n }\n }\n\n load();\n\n async function issue() {\n const done = await feedback.attempt(() =>\n api.query(\n `mutation Issue($label: String!, $expiresIn: Int, $organization: ID) {\n issueProvisioningToken(label: $label, expiresIn: $expiresIn, organization: $organization) { secret }\n }`,\n { label: label.trim() || \"Provisioning\", expiresIn: lifetime * DAY, organization: organization || null },\n ),\n );\n\n if (!done) return;\n\n issued = done.issueProvisioningToken;\n label = \"\";\n\n await load();\n }\n\n async function revoke(token) {\n if (!confirm(t(\"provisioning.revoke_confirm\", { label: token.label }))) return;\n\n const done = await feedback.attempt(\n () =>\n api.query(\n `mutation Revoke($id: ID!) { revokeProvisioningToken(id: $id) { provisioningToken { id } } }`,\n { id: token.id },\n ),\n t(\"provisioning.revoked\", { label: token.label }),\n );\n\n if (done) await load();\n }\n</script>\n\n<Section row title={t(\"provisioning.title\")} help={`${t(\"provisioning.lede\")} ${t(\"provisioning.connect.help\")}`}>\n <Notices feedback={feedback.state} />\n\n {#if data}\n <div class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"provisioning.connect.base_url\")}</span>\n <code class=\"tray px-2 py-1 font-mono text-xs break-all\">{data.scimBaseUrl}</code>\n </div>\n\n {#if data.provisioningTokens.length}\n <ul class=\"compact-list\">\n {#each data.provisioningTokens as token (token.id)}\n <li>\n <div class=\"min-w-0\">\n <div class=\"text-sm font-medium\">\n {token.label}{#if token.organization}<span class=\"hint\"> · {token.organization.name}</span>{/if}\n </div>\n <div class=\"hint text-xs\">\n {token.issuedBy\n ? t(\"provisioning.tokens.issued_by\", {\n identifier: token.issuedBy.identifier,\n used: since(token.usedAt, t(\"provisioning.tokens.never\")),\n expires: day(token.expiresAt),\n })\n : t(\"provisioning.tokens.detail\", {\n used: since(token.usedAt, t(\"provisioning.tokens.never\")),\n expires: day(token.expiresAt),\n })}\n </div>\n </div>\n <button type=\"button\" class=\"btn btn-ghost btn-xs ml-auto\" onclick={() => revoke(token)}>{t(\"provisioning.tokens.revoke\")}</button>\n </li>\n {/each}\n </ul>\n {/if}\n\n <form\n class=\"flex flex-wrap items-center gap-2\"\n onsubmit={(event) => {\n event.preventDefault();\n issue();\n }}\n >\n <input class=\"input input-sm w-full max-w-48\" aria-label={t(\"provisioning.connect.label\")} placeholder=\"Entra ID\" bind:value={label} />\n\n {#if data.organizations.length}\n <Select\n name={t(\"provisioning.connect.provisions\")}\n value={organization}\n options={[\n [\"\", t(\"provisioning.connect.every_account\")],\n ...data.organizations.map((held) => [held.key, t(\"provisioning.connect.only_members\", { name: held.name })]),\n ]}\n onchange={(key) => (organization = key)}\n />\n {/if}\n\n <div class=\"range\" role=\"group\" aria-label={t(\"provisioning.connect.lifetime\")}>\n {#each LIFETIMES as [days, name] (days)}\n <button type=\"button\" aria-pressed={lifetime === days} onclick={() => (lifetime = days)}>\n {t(`provisioning.lifetimes.${name}`)}\n </button>\n {/each}\n </div>\n\n <button type=\"submit\" class=\"btn btn-sm\">{t(\"provisioning.connect.issue\")}</button>\n </form>\n\n {#if issued}\n <div class=\"alert alert-warning alert-soft flex-col items-start gap-2\" role=\"status\">\n <span class=\"font-medium\">{t(\"provisioning.connect.shown_once\")}</span>\n <code class=\"font-mono text-xs break-all\">{issued.secret}</code>\n </div>\n {/if}\n {/if}\n</Section>\n","<script>\n import { t } from \"./lib/copy.js\";\n import LdapSection from \"./LdapSection.svelte\";\n import ProvisioningSection from \"./ProvisioningSection.svelte\";\n import Page from \"./ui/Page.svelte\";\n\n let { api } = $props();\n</script>\n\n<Page title={t(\"directory.title\")} lede={t(\"directory.lede\")}>\n <div class=\"grid gap-4\">\n <ProvisioningSection {api} />\n\n <LdapSection {api} />\n </div>\n</Page>\n","<script>\n import { t } from \"./lib/copy.js\";\n import Link from \"./ui/Link.svelte\";\n\n let { current, viewer, identifier, account, onsignout, onunpair, children } = $props();\n\n const TABS = [\"settings\", \"policies\", \"providers\", \"directory\", \"messages\", \"activity\"];\n\n function unpair() {\n if (confirm(t(\"settings_shell.forget_confirm\"))) onunpair();\n }\n</script>\n\n<div class=\"settings\">\n <div class=\"settings-bar\">\n <nav class=\"settings-tabs\" aria-label={t(\"settings_shell.label\")}>\n {#each TABS as tab (tab)}\n <Link\n to={`/${tab}`}\n class=\"settings-tab {current === tab ? 'settings-tab-on' : ''}\"\n >{t(`settings_shell.tabs.${tab}`)}</Link>\n {/each}\n </nav>\n\n <div class=\"settings-me\">\n <a class=\"settings-who\" href={account} title={t(\"settings_shell.account\")}>\n {#if viewer}\n <img\n src={`${viewer.avatars.photo ?? viewer.avatars.identicon}?size=64`}\n width=\"24\"\n height=\"24\"\n alt=\"\"\n class:drawn={!viewer.avatars.photo}\n onerror={(event) => (event.currentTarget.src = `${viewer.avatars.identicon}?size=64`)}\n />\n {/if}\n <span>{identifier}</span>\n </a>\n <button type=\"button\" class=\"settings-tab\" onclick={onsignout}>{t(\"settings_shell.sign_out\")}</button>\n <button type=\"button\" class=\"settings-tab settings-quiet\" onclick={unpair}>{t(\"settings_shell.forget\")}</button>\n </div>\n </div>\n\n <div class=\"min-w-0\">{@render children()}</div>\n</div>\n","<script>\n import { untrack } from \"svelte\";\n import { createApi } from \"./lib/api.svelte.js\";\n import { t } from \"./lib/copy.js\";\n import { createRouter, provideRouter } from \"./lib/router.svelte.js\";\n import { handshakeUrl, redeem } from \"./lib/pairing.js\";\n import Empty from \"./ui/Empty.svelte\";\n import Link from \"./ui/Link.svelte\";\n import Spinner from \"./ui/Spinner.svelte\";\n import ActorsPage from \"./ActorsPage.svelte\";\n import ActorPage from \"./ActorPage.svelte\";\n import DevicePage from \"./DevicePage.svelte\";\n import ClientsPage from \"./ClientsPage.svelte\";\n import ClientPage from \"./ClientPage.svelte\";\n import OrganizationsPage from \"./OrganizationsPage.svelte\";\n import OrganizationPage from \"./OrganizationPage.svelte\";\n import SettingsPage from \"./SettingsPage.svelte\";\n import OverviewPage from \"./OverviewPage.svelte\";\n import ActivityPage from \"./ActivityPage.svelte\";\n import ProvidersPage from \"./ProvidersPage.svelte\";\n import ProviderPage from \"./ProviderPage.svelte\";\n import MessagesPage from \"./MessagesPage.svelte\";\n import StreamsPage from \"./StreamsPage.svelte\";\n import PoliciesPage from \"./PoliciesPage.svelte\";\n import DirectoryPage from \"./DirectoryPage.svelte\";\n import SettingsShell from \"./SettingsShell.svelte\";\n\n let { boot } = $props();\n\n const api = untrack(() => createApi(boot));\n const router = untrack(() => createRouter(boot.root));\n\n provideRouter(router);\n\n let phase = $state(\"starting\");\n let failure = $state(null);\n let viewer = $state(null);\n let levels = $state(null);\n\n const limit = $derived.by(() => {\n if (!levels || levels.includes(\"owner\")) return null;\n if (levels.includes(\"security\") && levels.includes(\"support\")) return t(\"app.limited.both\");\n if (levels.includes(\"security\")) return t(\"app.limited.security\");\n if (levels.includes(\"support\")) return t(\"app.limited.support\");\n return t(\"app.limited.read\");\n });\n\n const NAV = [\n [\"\", \"overview\", '<path d=\"M3.5 10.5 10 4l6.5 6.5\"/><path d=\"M5.5 9v7h9V9\"/>'],\n [\"/actors\", \"actors\", '<circle cx=\"10\" cy=\"7\" r=\"3\"/><path d=\"M4 17c.8-3 3.2-4.5 6-4.5s5.2 1.5 6 4.5\"/>'],\n [\"/organizations\", \"organizations\", '<rect x=\"3.5\" y=\"7\" width=\"13\" height=\"9.5\" rx=\"1.5\"/><path d=\"M7.5 7V4.5h5V7\"/><path d=\"M3.5 11h13\"/>'],\n [\"/clients\", \"clients\", '<rect x=\"3\" y=\"3\" width=\"6\" height=\"6\" rx=\"1.5\"/><rect x=\"11\" y=\"3\" width=\"6\" height=\"6\" rx=\"1.5\"/><rect x=\"3\" y=\"11\" width=\"6\" height=\"6\" rx=\"1.5\"/><rect x=\"11\" y=\"11\" width=\"6\" height=\"6\" rx=\"1.5\"/>'],\n ];\n\n const SETTINGS = [\"settings\", \"policies\", \"providers\", \"directory\", \"messages\", \"activity\"];\n\n const REPAIRED = \"masks:manage:repaired\";\n\n function stale(error) {\n if (error === \"invalid_client\") return true;\n if (error !== \"invalid_scope\") return false;\n\n try {\n if (sessionStorage.getItem(REPAIRED)) return false;\n sessionStorage.setItem(REPAIRED, \"1\");\n return true;\n } catch {\n return false;\n }\n }\n\n function register() {\n location.replace(handshakeUrl(boot));\n }\n\n async function start() {\n const query = new URLSearchParams(location.search);\n\n try {\n if (stale(query.get(\"error\"))) {\n api.unpair();\n register();\n return;\n }\n\n if (query.get(\"error\")) {\n failure = query.get(\"error_description\") || query.get(\"error\");\n router.replace(\"\");\n phase = \"failed\";\n return;\n }\n\n if (query.get(\"initial_access_token\")) {\n await redeem(boot, query.get(\"initial_access_token\"));\n router.replace(\"\");\n await api.authorize(\"\");\n return;\n }\n\n if (!api.paired()) {\n register();\n return;\n }\n\n if (router.segments[0] === \"callback\") {\n const { returnTo } = await api.callback();\n router.replace(returnTo || \"\");\n ready();\n return;\n }\n\n if (!api.signedIn()) {\n await api.authorize(router.state.path.slice(boot.root.length) + router.state.search + location.hash);\n return;\n }\n\n ready();\n } catch (thrown) {\n failure = thrown.message;\n phase = \"failed\";\n }\n }\n\n let waiting = $state(0);\n\n async function countWaiting() {\n try {\n const data = await api.query(\n \"query Waiting { approvals: actorCount(pendingApproval: true) help: actorCount(recoveryRequested: true) }\",\n );\n\n waiting = data.approvals + data.help;\n } catch {\n waiting = 0;\n }\n }\n\n const section = $derived(router.segments[0] ?? \"\");\n const waitingLabel = $derived(t(\"app.waiting\", { count: waiting }));\n\n $effect(() => {\n if (phase === \"ready\" && section !== undefined) countWaiting();\n });\n\n function ready() {\n phase = \"ready\";\n\n api\n .query(\"query Viewer { viewer { identifier avatars { photo identicon } } manageLevels }\")\n .then((data) => {\n viewer = data.viewer;\n levels = data.manageLevels;\n })\n .catch(() => {});\n }\n\n start();\n\n const current = $derived(router.segments[0] ?? \"\");\n const inSettings = $derived(SETTINGS.includes(current));\n const signedInAs = $derived(\n viewer?.identifier ?? api.state.identity?.preferred_username ?? t(\"app.account\"),\n );\n\n function retry() {\n location.assign(boot.root);\n }\n\n function forget() {\n api.unpair();\n retry();\n }\n\n async function signOut() {\n location.assign((await api.signOut()) ?? boot.root);\n }\n</script>\n\n{#if phase === \"starting\"}\n <div class=\"grid min-h-screen place-items-center\">\n <Spinner label={t(\"app.starting\")} />\n </div>\n{:else if phase === \"failed\"}\n <div class=\"auth-page\">\n <main class=\"auth-col surface-terminus\">\n <div class=\"flow\">\n <span class=\"state state-bad\">{t(\"app.stopped\")}</span>\n\n <h1 class=\"prompt-title\">{t(\"app.failed\", { tenant: boot.tenant.name })}</h1>\n\n <p class=\"said\">{failure}</p>\n\n <button type=\"button\" class=\"action\" onclick={retry}>{t(\"app.retry\")}</button>\n </div>\n </main>\n </div>\n{:else}\n <div class=\"flex min-h-screen flex-col\">\n <header class=\"console-top sticky top-0 z-20\">\n <div class=\"console-bar mx-auto flex w-full max-w-6xl items-center gap-x-6 py-2\">\n <Link to=\"\" class=\"brand\"><img src=\"/masks-public/icon.svg\" alt=\"\" class=\"brand-mark\" />{boot.tenant.name}</Link>\n\n <nav class=\"nav md:flex-1\">\n {#each NAV as [to, label] (to)}\n <Link\n {to}\n class=\"nav-item {current === to.replace('/', '') ? 'nav-item-on' : ''}\"\n >{t(`app.nav.${label}`)}{#if label === \"actors\" && waiting > 0}<span class=\"nav-count\" title={waitingLabel}>{waiting}</span>{/if}</Link>\n {/each}\n </nav>\n\n <Link\n to=\"/settings\"\n class=\"console-cog ms-auto {inSettings ? 'console-cog-on' : ''}\"\n aria-label={t(\"app.settings\")}\n title={t(\"app.settings\")}\n >\n <svg viewBox=\"0 0 20 20\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n <path d=\"M17.03 8.46 L19.13 8.85 L19.13 11.15 L17.03 11.54 L16.06 13.88 L17.27 15.64 L15.64 17.27 L13.88 16.06 L11.54 17.03 L11.15 19.13 L8.85 19.13 L8.46 17.03 L6.12 16.06 L4.36 17.27 L2.73 15.64 L3.94 13.88 L2.97 11.54 L0.87 11.15 L0.87 8.85 L2.97 8.46 L3.94 6.12 L2.73 4.36 L4.36 2.73 L6.12 3.94 L8.46 2.97 L8.85 0.87 L11.15 0.87 L11.54 2.97 L13.88 3.94 L15.64 2.73 L17.27 4.36 L16.06 6.12 Z\" />\n <circle cx=\"10\" cy=\"10\" r=\"2.75\" />\n </svg>\n </Link>\n </div>\n </header>\n\n <main class=\"console-main mx-auto w-full max-w-6xl flex-1\">\n {#if limit}\n <p class=\"alert alert-info mb-4 text-sm\" role=\"status\">{limit}</p>\n {/if}\n {#if current === \"\"}\n <OverviewPage {api} {boot} />\n {:else if current === \"actors\"}\n {#if router.segments[1] === \"devices\" && router.segments[2]}\n <DevicePage {api} id={router.segments[2]} />\n {:else if router.segments[1]}\n <ActorPage {api} uuid={router.segments[1]} part={router.segments[2]} />\n {:else}\n <ActorsPage {api} />\n {/if}\n {:else if current === \"organizations\"}\n {#if router.segments[1]}\n <OrganizationPage {api} organizationKey={router.segments[1]} part={router.segments[2]} />\n {:else}\n <OrganizationsPage {api} />\n {/if}\n {:else if current === \"clients\"}\n {#if router.segments[1]}\n <ClientPage {api} clientId={router.segments[1]} part={router.segments[2]} />\n {:else}\n <ClientsPage {api} />\n {/if}\n {:else if inSettings}\n <SettingsShell {current} {viewer} identifier={signedInAs} account={boot.account} onsignout={signOut} onunpair={forget}>\n {#if current === \"providers\" && router.segments[1]}\n <ProviderPage {api} providerKey={router.segments[1]} part={router.segments[2]} />\n {:else if current === \"providers\"}\n <ProvidersPage {api} />\n {:else if current === \"policies\"}\n <PoliciesPage {api} />\n {:else if current === \"directory\"}\n <DirectoryPage {api} />\n {:else if current === \"messages\"}\n <MessagesPage {api} part={router.segments[1]} />\n {:else if current === \"activity\" && router.segments[1] === \"streams\"}\n <StreamsPage {api} />\n {:else if current === \"activity\"}\n <ActivityPage {api} />\n {:else}\n <SettingsPage {api} {boot} />\n {/if}\n </SettingsShell>\n {:else}\n <Empty>{t(\"app.missing\")}</Empty>\n {/if}\n </main>\n\n <nav class=\"tabbar md:hidden\" aria-label={t(\"app.sections\")}>\n {#each NAV as [to, label, icon] (to)}\n <Link {to} class=\"tabbar-item {current === to.replace('/', '') ? 'tabbar-item-on' : ''}\">\n <svg viewBox=\"0 0 20 20\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">{@html icon}</svg>\n <span>{t(`app.nav.${label}`)}</span>\n </Link>\n {/each}\n </nav>\n </div>\n{/if}\n","import { mount } from \"svelte\";\nimport App from \"../manage/App.svelte\";\nimport { useCopy } from \"../manage/lib/copy.js\";\n\nconst target = document.getElementById(\"manage\");\n\nif (target) {\n const boot = JSON.parse(target.dataset.boot);\n\n useCopy(boot.copy, document.documentElement.lang || \"en\");\n target.replaceChildren();\n\n mount(App, { target, props: { boot } });\n}\n"],"mappings":"A,qeAAA,IAAMkpC,GAAW,qEACjB,SAAgBC,GAAO,EAAS,GAAI,CAChC,IAAMC,EAAQ,IAAI,WAAWC,CAAM,EACnC,OAAO,gBAAgBD,CAAK,EAC5B,IAAIE,EAAQ,GACZ,IAAK,IAAMC,KAAQH,EACf,GAASF,GAASK,EAAO,IAC7B,OAAOD,CACX,CACA,SAAgBE,GAAO,EAAO,CAC1B,IAAIC,EAAS,GACb,IAAK,IAAMF,KAAQ,IAAI,WAAWH,CAAK,EACnC,GAAU,OAAO,aAAaG,CAAI,EACtC,OAAO,KAAKE,CAAM,CAAC,CACd,QAAQ,MAAO,GAAG,CAAC,CACnB,QAAQ,MAAO,GAAG,CAAC,CACnB,QAAQ,MAAO,EAAE,CAC1B,CACA,eAAsBC,GAAU,EAAU,CAEtC,OAAOF,GAAO,MADO,OAAO,OAAO,OAAO,UAAW,IAAI,YAAY,CAAC,CAAC,OAAOG,CAAQ,CAAC,CACnE,CACxB,CACA,IAAaC,GAAS,OCrBtB,eAAsBC,IAAgB,CAClC,IAAMC,EAAO,MAAM,OAAO,OAAO,YAAY,CAAE,KAAM,QAAS,WAAY,OAAQ,EAAG,GAAO,CAAC,OAAQ,QAAQ,CAAC,EACxGC,EAAW,MAAM,OAAO,OAAO,UAAU,MAAOD,EAAK,SAAS,EACpE,MAAO,CACH,WAAYA,EAAK,WACjB,IAAK,CAAE,IAAKC,EAAS,IAAK,IAAKA,EAAS,IAAK,EAAGA,EAAS,EAAG,EAAGA,EAAS,CAAE,CAC9E,CACJ,CACA,IAAMC,GAAQ,GAAUR,GAAO,IAAI,YAAY,CAAC,CAAC,OAAO,KAAK,UAAUF,CAAK,CAAC,CAAC,CAAC,MAAM,EACrF,eAAsBW,GAAU,EAAK,EAAQ,EAAK,EAAa,CAC3D,IAAMC,EAAS,IAAI,IAAIC,CAAG,EACpBC,EAAS,CAAE,IAAK,WAAY,IAAK,QAAS,IAAK3E,EAAI,GAAI,EACvD4E,EAAU,CACZ,IAAKlB,GAAO,EAAE,EACd,IAAKS,EAAO,YAAY,EACxB,IAAK,GAAGM,EAAO,SAASA,EAAO,WAC/B,IAAK,KAAK,MAAM,KAAK,IAAI,EAAI,GAAI,CACrC,EACII,IACA,EAAQ,IAAMd,GAAO,MAAM,OAAO,OAAO,OAAO,UAAW,IAAI,YAAY,CAAC,CAAC,OAAOc,CAAW,CAAC,CAAC,GAErG,IAAMC,EAAU,GAAGP,GAAKI,CAAM,EAAE,GAAGJ,GAAKK,CAAO,IAE/C,MAAO,GAAGE,EAAQ,GAAGf,GAAO,MADJ,OAAO,OAAO,KAAK,CAAE,KAAM,QAAS,KAAM,SAAU,EAAG/D,EAAI,WAAY,IAAI,YAAY,CAAC,CAAC,OAAO8E,CAAO,CAAC,CAC3F,GACzC,CACA,IAAMC,GAAW,QACXC,GAAQ,OACRC,GAAO,OACTC,GACJ,SAASC,IAAS,CAUd,MATA,MAAa,IAAI,SAAS,EAAS,IAAW,CAC1C,IAAMC,EAAU,UAAU,KAAKL,GAAU,CAAC,EAC1C,EAAQ,oBAAwBK,EAAQ,OAAO,kBAAkBJ,EAAK,EACtE,EAAQ,cAAkBK,EAAQD,EAAQ,MAAM,EAChD,EAAQ,YAAgBE,EAAOF,EAAQ,KAAK,CAChD,CAAC,CAAC,CAAC,MAAO,GAAY,CAElB,KADA,IAAW,IAAA,GACLG,CACV,CAAC,EACML,EACX,CACA,SAASM,GAAS,EAAS,CACvB,OAAO,IAAI,SAAS,EAAS,IAAW,CACpC,EAAQ,cAAkBH,EAAQD,EAAQ,MAAM,EAChD,EAAQ,YAAgBE,EAAOF,EAAQ,KAAK,CAChD,CAAC,CACL,CACA,eAAsBK,IAAc,CAChC,GAAI,CACA,IAAMC,EAAQ,MAAMP,GAAO,EACrBQ,EAAS,MAAMH,GAASE,EAAM,YAAYV,EAAK,CAAC,CAAC,YAAYA,EAAK,CAAC,CAAC,IAAIC,EAAI,CAAC,EACnF,GAAIU,EACA,OAAOA,EACX,IAAMC,EAAO,MAAMxB,GAAc,EAEjC,OADA,MAAMoB,GAASE,EAAM,YAAYV,GAAO,WAAW,CAAC,CAAC,YAAYA,EAAK,CAAC,CAAC,IAAIY,EAAMX,EAAI,CAAC,EAChFW,CACX,MACM,CACF,OAAOxB,GAAc,CACzB,CACJ,CACA,eAAsByB,IAAgB,CAClC,GAAI,CAEA,MAAML,IAAS,MADKL,GAAO,EAAA,CACN,YAAYH,GAAO,WAAW,CAAC,CAAC,YAAYA,EAAK,CAAC,CAAC,OAAOC,EAAI,CAAC,CACxF,MACM,CAAE,CACZ,CCpEA,IAAaa,GAAW,CACpB,SAAU,CAAC,gBAAiB,8BAA8B,EAC1D,UAAW,CAAC,gBAAiB,gCAAgC,EAC7D,OAAQ,CAAC,gBAAiB,iCAAiC,EAC3D,cAAe,CAAC,gBAAiB,uCAAuC,EACxE,iBAAkB,CACd,gBACA,kDACJ,EACA,WAAY,CAAC,gBAAiB,yCAAyC,EACvE,QAAS,CAAC,gBAAiB,wBAAwB,EACnD,cAAe,CAAC,gBAAiB,6BAA6B,EAC9D,iBAAkB,CAAC,gBAAiB,qCAAqC,EACzE,aAAc,CAAC,gBAAiB,yCAAyC,EACzE,eAAgB,CAAC,gBAAiB,uCAAuC,EACzE,eAAgB,CAAC,gBAAiB,gCAAgC,EAClE,WAAY,CAAC,gBAAiB,kCAAkC,EAChE,QAAS,CACL,gBACA,qDACJ,EACA,gBAAiB,CACb,gBACA,sEACJ,EACA,gBAAiB,CACb,gBACA,4DACJ,EACA,WAAY,CAAC,gBAAiB,6CAA6C,EAC3E,YAAa,CACT,gBACA,iDACJ,EACA,uBAAwB,CACpB,gBACA,8CACJ,EACA,sBAAuB,CACnB,gBACA,4CACJ,EACA,2BAA4B,CACxB,gBACA,yEACJ,EACA,4BAA6B,CACzB,gBACA,oDACJ,EACA,4BAA6B,CACzB,gBACA,6DACJ,EACA,aAAc,CAAC,gBAAiB,kCAAkC,EAClE,oBAAqB,CACjB,gBACA,yDACJ,EACA,kBAAmB,CACf,gBACA,yDACJ,EACA,UAAW,CAAC,qBAAsB,oCAAoC,EACtE,gBAAiB,CAAC,qBAAsB,gCAAgC,EACxE,WAAY,CAAC,qBAAsB,wBAAwB,EAC3D,gBAAiB,CACb,qBACA,iDACJ,EACA,aAAc,CACV,qBACA,+CACJ,EACA,kBAAmB,CAAC,qBAAsB,uBAAuB,EACjE,qBAAsB,CAClB,qBACA,+CACJ,EACA,eAAgB,CACZ,qBACA,iDACJ,EACA,gBAAiB,CACb,qBACA,gEACJ,EACA,kBAAmB,CACf,qBACA,uCACJ,EACA,mBAAoB,CAChB,qBACA,wCACJ,EACA,gBAAiB,CACb,qBACA,qCACJ,EACA,cAAe,CAAC,qBAAsB,kCAAkC,EACxE,aAAc,CAAC,qBAAsB,uBAAuB,EAC5D,eAAgB,CAAC,qBAAsB,kCAAkC,EACzE,SAAU,CAAC,qBAAsB,mCAAmC,EACpE,YAAa,CAAC,qBAAsB,8BAA8B,EAClE,aAAc,CACV,qBACA,sDACJ,EACA,gBAAiB,CACb,4BACA,oCACJ,EACA,mBAAoB,CAChB,4BACA,qDACJ,EACA,WAAY,CAAC,oBAAqB,yCAAyC,EAC3E,YAAa,CAAC,0BAA2B,6BAA6B,EACtE,iBAAkB,CACd,0BACA,4CACJ,EACA,yBAA0B,CACtB,0BACA,uCACJ,EACA,oBAAqB,CACjB,0BACA,mEACJ,EACA,kBAAmB,CACf,0BACA,gCACJ,EACA,YAAa,CAAC,0BAA2B,gCAAgC,EACzE,WAAY,CACR,eACA,mDACJ,EACA,SAAU,CAAC,eAAgB,mCAAmC,EAC9D,aAAc,CAAC,iBAAkB,2CAA2C,EAC5E,gBAAiB,CACb,iBACA,kDACJ,EACA,gBAAiB,CAAC,eAAgB,yBAAyB,EAC3D,SAAU,CAAC,eAAgB,+CAA+C,EAC1E,cAAe,CACX,eACA,gDACJ,EACA,UAAW,CAAC,eAAgB,0CAA0C,EACtE,kBAAmB,CAAC,iBAAkB,8BAA8B,EACpE,cAAe,CACX,iBACA,8CACJ,EACA,uBAAwB,CACpB,iBACA,yCACJ,EACA,eAAgB,CACZ,gBACA,2DACJ,EACA,kBAAmB,CACf,kBACA,uCACJ,EACA,iBAAkB,CAAC,kBAAmB,8BAA8B,EACpE,aAAc,CAAC,gBAAiB,4CAA4C,EAC5E,iBAAkB,CACd,gBACA,sDACJ,EACA,gBAAiB,CACb,qBACA,uEACJ,EACA,WAAY,CAAC,gBAAiB,yCAAyC,EACvE,cAAe,CACX,qBACA,6CACJ,EACA,kBAAmB,CACf,gBACA,wCACJ,EACA,0BAA2B,CACvB,gBACA,2DACJ,EACA,yBAA0B,CACtB,0BACA,wBACJ,CACJ,ECnMA,SAAgBP,GAAQ,EAAK,GAAGQ,EAAQ,CACpC,GAAM,CAACC,EAAMC,GAAYH,GAAS9F,GAC9Be,EAAQ,EACZ,MAAO,CACH,OACA,YAAakF,EAAS,WAAW,mBAAsB,OAAOF,EAAO,IAAQ,CAAC,CAClF,CACJ,CACA,SAAgBG,GAAO,EAAK,GAAGH,EAAQ,CACnC,OAAOR,GAAQvF,EAAK,GAAG+F,CAAM,CAAC,CAAC,WACnC,CACA,SAASI,GAAO,EAAM,EAAa,CAC/B,OAAOC,EAAc,UAAUJ,EAAK,IAAII,IAAgB,UAAUJ,GACtE,CACA,IAAaK,GAAb,cAAgC,KAAM,CAClC,KACA,YACA,OACA,IACA,YAAY,EAAM,EAAa,EAAU,CAAC,EAAG,CACzC,MAAMF,GAAOH,EAAMI,CAAW,CAAC,EAC/B,KAAK,KAAO,aACZ,KAAK,KAAOJ,EACZ,KAAK,YAAcI,EACnB,KAAK,OAASE,EAAQ,OACtB,KAAK,IAAMA,EAAQ,GACvB,CACJ,EACaC,GAAb,MAAaA,UAAgBF,EAAW,CACpC,YAAY,EAAM,EAAa,EAAU,CAAC,EAAG,CACzC,MAAML,EAAMI,EAAaE,CAAO,EAChC,KAAK,KAAO,SAChB,CACA,OAAO,GAAG,EAAK,GAAGP,EAAQ,CACtB,GAAM,CAAE,OAAM,eAAgBR,GAAQvF,EAAK,GAAG+F,CAAM,EACpD,OAAO,IAAIQ,EAAQP,EAAMI,CAAW,CACxC,CACJ,EACaI,GAAb,MAAaA,UAAqBH,EAAW,CACzC,YAAY,EAAa,EAAU,CAAC,EAAG,CACnC,MAAMC,EAAQ,MAAQ,gBAAiBF,CAAW,EAClD,KAAK,KAAO,cAChB,CACA,OAAO,GAAG,EAAK,GAAGL,EAAQ,CACtB,GAAM,CAAE,OAAM,eAAgBR,GAAQvF,EAAK,GAAG+F,CAAM,EACpD,OAAO,IAAIS,EAAaJ,EAAa,CAAE,MAAK,CAAC,CACjD,CACJ,EACaK,GAAb,MAAaA,UAAiBJ,EAAW,CACrC,YAAY,EAAa,CACrB,MAAM,eAAgBD,CAAW,EACjC,KAAK,KAAO,UAChB,CACA,OAAO,GAAG,EAAK,GAAGL,EAAQ,CACtB,OAAO,IAAIU,EAASP,GAAOlG,EAAK,GAAG+F,CAAM,CAAC,CAC9C,CACJ,ECxDMW,GAAS,GACTC,GAAW,CAAC,MAAO,MAAO,MAAO,MAAO,KAAK,EAC7CC,GAAa,CACf,MAAO,CACH,UAAW,CAAE,KAAM,oBAAqB,KAAM,SAAU,EACxD,QAAS,CAAE,KAAM,mBAAoB,CACzC,EACA,MAAO,CACH,UAAW,CAAE,KAAM,QAAS,WAAY,OAAQ,EAChD,QAAS,CAAE,KAAM,QAAS,KAAM,SAAU,CAC9C,CACJ,EACA,SAASjD,GAAM,EAAM,CACjB,IAAMkD,EAASC,EAAK,QAAQ,KAAM,GAAG,CAAC,CAAC,QAAQ,KAAM,GAAG,EAClD9C,EAAS,KAAK6C,EAAO,OAAOA,EAAO,QAAW,EAAKA,EAAO,OAAS,GAAM,EAAI,GAAG,CAAC,EACjFE,EAAM,IAAI,WAAW,IAAI,YAAY/C,EAAO,MAAM,CAAC,EACzD,IAAK,IAAIjD,EAAQ,EAAGA,EAAQiD,EAAO,OAAQ,IACvC,EAAIjD,GAASiD,EAAO,WAAWjD,CAAK,EAExC,OAAOgG,CACX,CACA,SAASC,GAAU,EAAO,CACtB,OAAO,KAAK,OAAO,aAAa,GAAGnD,CAAK,CAAC,CAAC,CACrC,QAAQ,MAAO,GAAG,CAAC,CACnB,QAAQ,MAAO,GAAG,CAAC,CACnB,QAAQ,MAAO,EAAE,CAC1B,CACA,SAASoD,GAAK,EAAM,CAChB,GAAI,CACA,IAAMC,EAAO,KAAK,MAAM,IAAI,YAAY,CAAC,CAAC,OAAOvD,GAAMmD,CAAI,CAAC,CAAC,EAC7D,GAAI,CAACI,GAAQ,OAAOA,GAAS,UAAY,MAAM,QAAQA,CAAI,EACvD,MAAMV,GAAa,GAAG,WAAW,EAErC,OAAOU,CACX,MACM,CACF,MAAMV,GAAa,GAAG,WAAW,CACrC,CACJ,CACA,SAASW,GAAU,EAAO,CAGtB,OAFI,MAAM,QAAQtD,CAAK,EACZA,EAAM,IAAI,MAAM,EACpBA,GAAiC,KAAO,CAAC,EAAI,CAAC,OAAOA,CAAK,CAAC,CACtE,CACA,eAAeuD,GAAS,EAAO,CAC3B,IAAMC,EAAS,IAAI,WAAW,MAAM,OAAO,OAAO,OAAO,UAAW,IAAI,YAAY,CAAC,CAAC,OAAOxD,CAAK,CAAC,CAAC,EACpG,OAAOmD,GAAUK,EAAO,SAAS,EAAGA,EAAO,OAAS,CAAC,CAAC,CAC1D,CACA,eAAsBC,GAAc,EAAO,CAAE,SAAQ,WAAU,QAAO,cAAa,SAAQ,SAAQ,SAASZ,IAAW,CACnH,GAAM,CAACa,EAAWC,EAAYC,EAAc,GAAGC,GAAQC,EAAM,MAAM,GAAG,EACtE,GAAI,CAACJ,GACD,CAACC,GACDC,IAAiB,IAAA,IACjBC,EAAK,OAAS,EACd,MAAMlB,GAAa,GAAG,WAAW,EAErC,IAAM7B,EAASsC,GAAKM,CAAS,EACvBK,EAAYhB,GAAW,OAAOjC,EAAO,GAAG,GAC9C,GAAI,CAACiD,EACD,MAAMpB,GAAa,GAAG,mBAAoB,OAAO7B,EAAO,GAAG,CAAC,EAEhE,GAAIA,EAAO,MAAQ,IAAA,IACH,OAAOA,EAAO,GAAG,CAAC,CACzB,YAAY,CAAC,CACb,QAAQ,iBAAkB,EACzB,IAAM,MACR,MAAM6B,GAAa,GAAG,aAAc,OAAO7B,EAAO,GAAG,EAAG,KAAK,EAGrE,IAAM3E,EAAM,MAAM,OAAO,OAAO,UAAU,MAAO,CAAE,GAAI,MAAM6H,EAAO,OAAOlD,EAAO,KAAO,EAAE,CAAC,EAAI,IAAK,OAAOA,EAAO,GAAG,CAAE,EAAGiD,EAAU,UAAW,GAAO,CAAC,QAAQ,CAAC,EAEjK,GAAI,CAAC,MADgB,OAAO,OAAO,OAAOA,EAAU,QAAS5H,EAAK2D,GAAM8D,CAAY,EAAG,IAAI,YAAY,CAAC,CAAC,OAAO,GAAGF,EAAU,GAAGC,GAAY,CAAC,EAEzI,MAAMhB,GAAa,GAAG,gBAAiBsB,CAAM,EAEjD,IAAMC,EAASd,GAAKO,CAAU,EACxBQ,EAAM,KAAK,MAAM,KAAK,IAAI,EAAI,GAAI,EACxC,GAAI,OAAOD,EAAO,KAAO,EAAE,CAAC,CAAC,QAAQ,MAAO,EAAE,IAAMD,EAChD,MAAMtB,GAAa,GAAG,cAAc,EAExC,IAAMyB,EAAQd,GAAUY,EAAO,GAAG,EAClC,GAAI,CAACE,EAAM,SAASC,CAAQ,EACxB,MAAM1B,GAAa,GAAG,gBAAgB,EAE1C,IAAK,IAAM2B,KAAQxB,GACf,GAAIoB,EAAOI,KAAU,IAAA,GACjB,MAAM3B,GAAa,GAAG,iBAAkB2B,CAAI,EAGpD,GAAI,OAAOJ,EAAO,KAAQ,UAAYC,EAAMI,GAAUL,EAAO,IACzD,MAAMvB,GAAa,GAAG,SAAS,EAEnC,GAAI,OAAOuB,EAAO,KAAQ,UAAYA,EAAO,IAAMK,EAASJ,EACxD,MAAMxB,GAAa,GAAG,eAAe,EAEzC,GAAI,OAAOuB,EAAO,KAAQ,UAAYA,EAAO,IAAMK,EAASJ,EACxD,MAAMxB,GAAa,GAAG,kBAAkB,EAE5C,GAAIyB,EAAM,OAAS,GAAKF,EAAO,MAAQ,IAAA,GACnC,MAAMvB,GAAa,GAAG,4BAA4B,EAEtD,GAAIuB,EAAO,MAAQ,IAAA,IAAaA,EAAO,MAAQG,EAC3C,MAAM1B,GAAa,GAAG,uBAAuB,EAEjD,GAAIuB,EAAO,QAAUM,EACjB,MAAM7B,GAAa,GAAG,wBAAwB,EAElD,GAAI3B,IAAgB,IAAA,IAChB,OAAOkD,EAAO,SAAY,UAC1BA,EAAO,UAAa,MAAMX,GAASvC,CAAW,EAC9C,MAAM2B,GAAa,GAAG,6BAA6B,EAEvD,GAAI8B,IAAW,IAAA,IACX,EAAE,OAAOP,EAAO,WAAc,UAC1BA,EAAO,UAAYO,EAASF,GAAUJ,GAC1C,MAAMxB,GAAa,GAAG,SAAS,EAEnC,OAAOuB,CACX,CCrHA,SAAgBQ,GAAK,EAAO,CAGxB,OAFK1E,EAEE,MAAM,QAAQA,CAAK,EAAIA,EAAQA,EAAM,MAAM,KAAK,CAAC,CAAC,OAAO,OAAO,EAD5D,CAAC,CAEhB,CCAA,IAAM2E,GAAU,gBACVC,GAAU,gBAChB,SAAgBC,GAAoB,EAAS,CACzC,IAAMZ,EAASxB,EAAQ,OAAO,QAAQ,MAAO,EAAE,EACzCqC,EAAOrC,EAAQ,OAAS,WAAW,MAAM,KAAK,UAAU,EACxDsC,EAAQtC,EAAQ,SAAW,WAAW,eACtCuC,EAAQN,GAAKjC,EAAQ,OAAS,CAAC,SAAU,UAAW,OAAO,CAAC,EAC5DwC,EAAYP,GAAKjC,EAAQ,QAAQ,EACjCyC,EAAO,WAAW,UAAU,OAC5BC,EAAW1C,EAAQ,WAAayC,GAAQ,GAAGA,uBAC3CE,EAAc3C,EAAQ,cAAgByC,GAAQ,GAAGA,EAAK,IAC5D,GAAI,CAAC,WAAW,QAAQ,OACpB,MAAM,IAAItC,GAAS,+HAA+H,EAEtJ,GAAI,CAACuC,GAAY,CAACC,EACd,MAAM,IAAI1C,GAAQ,kBAAmB,sEAAsE,EAE/G,IAAM2C,EAAWC,GAAQP,CAAK,EAC1BQ,EAAW,KACXlC,EAAOgC,GAAU,QAAU,KAC3BnB,EAASmB,GAAU,UAAY,KAC/BG,EAAO,KACPC,EAAa,KACbC,EAAU,KACRC,EAAS,MAAO,EAAQ,EAAK,IAC1BlD,EAAQ,MAEb,IAAYb,GAAY,EACjB,CAAE,KAAM,MAAMjB,GAAU,MAAM+E,EAASpF,EAAQO,EAAKG,CAAW,CAAE,GAF7D,CAAC,EAIZ4E,EAAa,EACXC,MAAc,CAChB,EAAO,KACP,EAAS,KACTC,EAAK,CACT,EACMA,MAAa,CACf,GAAI,CACIzC,EACA0B,EAAM,QAAQH,GAAS,KAAK,UAAU,CAAE,OAAQvB,EAAM,SAAUa,CAAO,CAAC,CAAC,EAGzEa,EAAM,WAAWH,EAAO,CAChC,MACM,CAAE,CACZ,EACMmB,EAAW,SAAY,CACzB,GAAIR,EACA,OAAOA,EACX,IAAMS,EAAW,MAAMlB,EAAK,GAAGb,EAAO,mCAAoC,CACtE,QAAS,CAAE,OAAQ,kBAAmB,CAC1C,CAAC,EACD,GAAI,CAAC+B,EAAS,GAAI,CACd,GAAM,CAAE,OAAM,eAAgBtE,GAAQ,kBAAmBuC,EAAQ+B,EAAS,MAAM,EAChF,MAAM,IAAItD,GAAQP,EAAMI,EAAa,CAAE,OAAQyD,EAAS,MAAO,CAAC,CACpE,CACA,IAAMlE,EAAS,MAAMkE,EAAS,KAAK,EACnC,GAAIlE,EAAM,QAAQ,QAAQ,MAAO,EAAE,IAAMmC,EACrC,MAAMvB,GAAQ,GAAG,gBAAiBuB,EAAQ,OAAOnC,EAAM,MAAM,CAAC,EAGlE,MADA,GAAWA,EACJA,CACX,EACMmE,EAAY,KAAO,IAAe,CACpC,GAAM,CAAE,YAAa,MAAMF,EAAS,EACpC,GAAI,CAACG,EACD,MAAMxD,GAAQ,GAAG,oBAAqBuB,EAAQ,UAAU,EAE5D,IAAM+B,EAAW,MAAMlB,EAAKoB,EAAU,CAClC,QAAS,CAAE,OAAQ,kBAAmB,EACtC,GAAIC,EAAa,CAAE,MAAO,UAAW,EAAI,CAAC,CAC9C,CAAC,EACD,GAAI,CAACH,EAAS,GAAI,CACd,GAAM,CAAE,OAAM,eAAgBtE,GAAQ,kBAAmBwE,EAAUF,EAAS,MAAM,EAClF,MAAM,IAAItD,GAAQP,EAAMI,EAAa,CAAE,OAAQyD,EAAS,MAAO,CAAC,CACpE,CACA,IAAMlE,EAAS,MAAMkE,EAAS,KAAK,EACnC,OAAO,OAAO,aAAalE,EAAM,MAAQ,CAAC,EAAA,CACrC,OAAQ,GAAQsE,EAAI,MAAQ,CAACA,EAAI,KAAOA,EAAI,MAAQ,MAAM,CAAC,CAC3D,IAAK,GAAQ,CAACA,EAAI,IAAKA,CAAG,CAAC,CAAC,CACrC,EACMpC,EAAS,MAAO,EAAK,EAAU,KAAU,EACvCqC,GAAW,CAACb,KACZ,EAAO,MAAMS,EAAUI,CAAO,GAClC,IAAMvE,EAAQ0D,EAAKc,GACnB,GAAIxE,EACA,OAAOA,EACX,GAAI,CAACuE,EACD,OAAOrC,EAAOsC,EAAK,EAAI,EAC3B,MAAM3D,GAAa,GAAG,SAAUsB,EAAQqC,CAAG,CAC/C,EACMC,EAAO,KAAO,IAAS,CACzB,IAAMC,EAAUZ,EACV,CAAE,kBAAmB,MAAMG,EAAS,EACpCC,EAAW,MAAMlB,EAAK2B,EAAgB,CACxC,OAAQ,OACR,QAAS,CACL,eAAgB,oCAChB,OAAQ,mBACR,GAAI,MAAMd,EAAO,OAAQc,CAAc,CAC3C,EACA,KAAM,IAAI,gBAAgBC,CAAI,CAAC,CAAC,SAAS,CAC7C,CAAC,EACK3F,EAAW,MAAMiF,EAAS,KAAK,CAAC,CAAC,WAAa,CAAC,EAAE,EACvD,GAAI,CAACA,EAAS,GAAI,CACd,GAAM,CAAE,OAAM,eAAgBjF,EAAQ,MAChC,CAAE,KAAMA,EAAQ,MAAO,YAAaA,EAAQ,iBAAkB,EAC9DW,GAAQ,kBAAmB+E,EAAgBT,EAAS,MAAM,EAChE,MAAM,IAAItD,GAAQP,EAAMI,EAAa,CAAE,OAAQyD,EAAS,MAAO,CAAC,CACpE,CACA,GAAIQ,IAAYZ,EACZ,MAAM,IAAIlD,GAAQ,gBAAiB,wDAAwD,EAW/F,MATA,GAAO,CACH,aAAc3B,EAAQ,aACtB,SAAUA,EAAQ,SAClB,cAAeA,EAAQ,cACvB,WAAYA,EAAQ,YAAc,SAClC,MAAOA,EAAQ,OAAS,GACxB,WAAY,OAAOA,EAAQ,YAAc,CAAC,EAC1C,YAAa,KAAK,MAAM,KAAK,IAAI,EAAI,GAAI,CAC7C,EACOsC,CACX,EACMsD,EAAe,MAAO,CAAE,WAAU,SAAQ,eAAelE,EAAQ,cAAkB,CAAC,IAAM,CAC5F,GAAM,CAAE,0BAA2B,MAAMsD,EAAS,EAC5C1F,EAAWR,GAAO,EAClB+G,EAAU,CACZ,MAAO/G,GAAO,EAAE,EAChB,MAAOmF,EAAM,SAAS,QAAQ,EAAInF,GAAO,EAAE,EAAI,GAC/C,WACA,SAAUgH,GAAY,GAAG,SAAS,WAAW,SAAS,SACtD,GAAIC,EAAe,CAAE,cAAa,EAAI,CAAC,CAC3C,EACA/B,EAAM,QAAQJ,GAAS,KAAK,UAAUiC,CAAO,CAAC,EAC9C,IAAMG,EAAQ,IAAI,gBAAgB,CAC9B,CAAC,gBAAiB,MAAM,EACxB,CAAC,YAAa5B,CAAQ,EACtB,CAAC,eAAgBC,CAAW,EAC5B,CAAC,QAASJ,EAAM,KAAK,GAAG,CAAC,EACzB,CAAC,QAAS4B,EAAQ,KAAK,EACvB,CAAC,iBAAkB,MAAMxG,GAAUC,CAAQ,CAAC,EAC5C,CAAC,wBAAyBC,EAAM,CACpC,CAAC,EACGsG,EAAQ,OACRG,EAAM,OAAO,QAASH,EAAQ,KAAK,EACvC,IAAK,IAAM5G,KAASiF,EAChB8B,EAAM,OAAO,WAAY/G,CAAK,EAKlC,OAJIgH,GACAD,EAAM,OAAO,SAAUC,CAAM,EAC7BF,GACAC,EAAM,OAAO,eAAgBD,CAAY,EACtC,GAAGG,EAAuB,GAAGF,EAAM,SAAS,GACvD,EACMG,EAAY,MAAO,EAAS,CAAE,QAAQ,YAAa,QAAS,CAAC,IAAM,CACrE,GAAM,CAAE,kBAAiB,2BAA4B,MAAMnB,EAAS,EACpE,GAAI,CAACoB,EACD,MAAMzE,GAAQ,GAAG,oBAAqBuB,EAAQ,iBAAiB,EAEnE,GAAImD,GAA2B,CAACA,EAAwB,SAASC,CAAK,EAClE,MAAM3E,GAAQ,GAAG,aAAcuB,EAAQoD,CAAK,EAEhD,IAAMC,EAAO,GAAGH,EAAgB,GAAG,mBAAmBI,CAAO,EAAE,GAAGF,IAClE,OAAOG,EAAO,GAAGF,EAAK,QAAQE,IAASF,CAC3C,EACMG,GAAW,EAAS,KACtB,CAAKpE,GAEE,KAAK,IAAI,EAAI,IAAOkB,GAAUlB,EAAK,YAAcA,EAAK,WAE3DqE,EAAQ,SAAY,CACtB,GAAI,CAACrE,GAAM,cACP,MAAMX,GAAQ,GAAG,kBAAkB,EAEvC,IAAMiF,EAAWtE,EAAK,cAChBqD,EAAO,CACT,CAAC,aAAc,eAAe,EAC9B,CAAC,gBAAiBiB,CAAQ,EAC1B,CAAC,YAAaxC,CAAQ,CAC1B,EACA,IAAK,IAAMnF,KAASiF,EAChByB,EAAK,KAAK,CAAC,WAAY1G,CAAK,CAAC,EACjC,IAAI4H,EACJ,GAAI,CACA,EAAS,MAAMrB,EAAKG,CAAI,CAC5B,OACOhF,EAAS,CAIZ,MAHIA,EAAQ,OAAS,iBACjBmE,EAAM,EAEJnE,CACV,CAGA,MAFA,GAAO,gBAAkBiG,EACzB7B,EAAK,EACE8B,CACX,EACMvB,EAAU,UACZ,IAAeqB,EAAM,CAAC,CAAC,YAAc,CACjC,EAAa,IACjB,CAAC,EACM,MAAMjC,GAEXoC,EAAS,KAAO,IAAU,CAC5B,GAAM,CAAE,uBAAwB,MAAM9B,EAAS,EAC1C+B,GAEL,MAAMhD,EAAKgD,EAAqB,CAC5B,OAAQ,OACR,QAAS,CAAE,eAAgB,mCAAoC,EAC/D,KAAM,IAAI,gBAAgB,CACtB,CAAC,QAAShE,CAAK,EACf,CAAC,kBAAmB,eAAe,EACnC,CAAC,YAAaqB,CAAQ,CAC1B,CAAC,CAAC,CAAC,SAAS,CAChB,CAAC,CACL,EACM4C,EAAS,CACX,MAAM,OAAQ,CACV,IAAMlH,EAAM,IAAI,IAAI,OAAO,SAAS,IAAI,EAExC,GAAI,EADaA,EAAI,aAAa,IAAI,MAAM,GAAKA,EAAI,aAAa,IAAI,OAAO,IAC5DkE,EAAM,QAAQJ,EAAO,IAAM,KACxC,OAAOT,EACX,GAAM,CAAE,YAAa,MAAM6D,EAAO,SAASlH,EAAI,IAAI,EAEnD,OADA,OAAO,QAAQ,aAAa,OAAO,QAAQ,MAAO,GAAIgG,CAAQ,EACvD3C,CACX,EACA,WACA,eACA,YACA,MAAM,UAAU,EAAO,CAAC,EAAG,CACvB,OAAO,SAAS,OAAO,MAAMyC,EAAaqB,CAAI,CAAC,CACnD,EACA,SAAU,CACN,OAAOjD,EAAM,QAAQJ,EAAO,IAAM,IACtC,EACA,MAAM,SAAS,EAAM,OAAO,SAAS,KAAM,CACvC,IAAMoC,EAAQ,IAAI,IAAIlG,CAAG,CAAC,CAAC,aACrBoH,EAAMlD,EAAM,QAAQJ,EAAO,EAEjC,GADAI,EAAM,WAAWJ,EAAO,EACpBoC,EAAM,IAAI,OAAO,EACjB,MAAM,IAAIrE,GAAQqE,EAAM,IAAI,OAAO,EAAGA,EAAM,IAAI,mBAAmB,GAAK,IAAA,EAAS,EAErF,GAAI,CAACkB,EACD,MAAMvF,GAAQ,GAAG,mBAAmB,EAExC,IAAMkE,EAAU,KAAK,MAAMqB,CAAG,EAC9B,GAAIlB,EAAM,IAAI,OAAO,IAAMH,EAAQ,MAC/B,MAAMlE,GAAQ,GAAG,gBAAgB,EAErC,IAAMP,EAAO4E,EAAM,IAAI,MAAM,EAC7B,GAAI,CAAC5E,EACD,MAAMO,GAAQ,GAAG,kBAAkB,EAEvC,IAAMgE,EAAO,CACT,CAAC,aAAc,oBAAoB,EACnC,CAAC,OAAQvE,CAAI,EACb,CAAC,YAAagD,CAAQ,EACtB,CAAC,eAAgBC,CAAW,EAC5B,CAAC,gBAAiBwB,EAAQ,QAAQ,CACtC,EACA,IAAK,IAAM5G,KAASiF,EAChByB,EAAK,KAAK,CAAC,WAAY1G,CAAK,CAAC,EACjC,IAAM4H,EAAS,MAAMrB,EAAKG,CAAI,EAC9B,GAAIE,EAAQ,MAAO,CACf,GAAI,CAACgB,EAAO,SAER,MADA/B,EAAM,EACAlD,GAAa,GAAG,aAAa,EAEvC,GAAI,CACA,EAAS,MAAMc,GAAcmE,EAAO,SAAU,CAC1C,SACA,SAAUzC,EACV,MAAOyB,EAAQ,MACf,YAAagB,EAAO,aACpB,QACJ,CAAC,CACL,OACOlG,EAAS,CAEZ,MADAmE,EAAM,EACAnE,CACV,CACA,IAAM0C,EAAQF,GAAQ,KAAK,IAC3B,GAAI0C,EAAQ,cAAgBxC,GAASA,IAAUwC,EAAQ,aAEnD,MADAf,EAAM,EACAlD,GAAa,GAAG,8BAA+BiE,EAAQ,YAAY,CAEjF,CAEA,OADAd,EAAK,EACE,CAAE,SAAQ,SAAU5B,EAAQ,SAAU0C,EAAQ,QAAS,CAClE,EACA,UAAW,CACP,OAAO1C,CACX,EACA,cAAe,CACX,OAAOA,GAAQ,KAAO,IAC1B,EACA,eAAgB,CACZ,OAAOA,GAAQ,MAAQ,CAAC,CAC5B,EACA,MAAM,mBAAmB,EAAK,EAAO,CAAC,EAAG,CACrC,OAAO,SAAS,OAAO,MAAMyC,EAAa,CAAE,GAAGqB,EAAM,aAAc7L,CAAI,CAAC,CAAC,CAC7E,EACA,SAAU,CACN,OAAO+H,IAAS,kBAAoB,IACxC,EACA,MAAM,MAAM,EAAUA,GAAQ,IAAK,CAC/B,GAAI,CAACqD,GAAW,CAAClE,EACb,OAAO,KACX,IAAM2C,EAAW,MAAMlB,EAAK,MAAMoC,EAAUK,EAAS,CAAE,MAAO,OAAQ,CAAC,EAAG,CACtE,QAAS,CACL,cAAe,GAAGlE,EAAK,WAAW,GAAGA,EAAK,eAC1C,OAAQ,SACZ,CACJ,CAAC,EACD,OAAO2C,EAAS,GAAK,MAAMA,EAAS,KAAK,EAAI,IACjD,EACA,UACA,MAAM,MAAM,EAAK,EAAO,CAAC,EAAG,CACpB3C,GAAM,eAAiBoE,EAAQ,GAC/B,MAAMpB,EAAQ,EAClB,IAAM6B,EAAS7E,GAAM,aACf8E,EAAU,IAAI,QAAQC,EAAK,OAAO,EACxC,GAAIF,GAAU7E,EAAM,CAChB8E,EAAQ,IAAI,gBAAiB,GAAG9E,EAAK,WAAW,GAAG6E,GAAQ,EAC3D,IAAK,GAAM,CAAC5D,EAAMtE,KAAU,OAAO,QAAQ,MAAM2F,EAAOyC,EAAK,QAAU,MAAOvH,EAAKqH,CAAM,CAAC,EACtFC,EAAQ,IAAI7D,EAAMtE,CAAK,CAE/B,CACA,OAAO,MAAM8E,EAAKjE,EAAK,CAAE,GAAGuH,EAAM,SAAQ,CAAC,CAC/C,EACA,MAAM,MAAM,EAAQ,EAAK,CACrB,OAAQ,MAAMzC,EAAOrF,EAAQO,EAAKwC,GAAM,YAAY,EAAA,CAAG,MAAQ,IACnE,EACA,MAAM,iBAAiB,EAAS,GAAI,CAGhC,OAFIA,GAAM,eAAiBoE,EAAQlD,CAAM,GACrC,MAAM8B,EAAQ,EACXhD,GAAM,cAAgB,IACjC,EACA,aAAc,CACV,OAAOA,GAAM,cAAgB,IACjC,EACA,QAAS,CACL,OAAOA,CACX,EACA,eAAgB,CACZ,OAAOA,EAAO,GAAGA,EAAK,WAAW,GAAGA,EAAK,eAAiB,IAC9D,EACA,UACA,MAAM,OAAO,CAAE,aAAa,GAAO,yBAA0B,CAAC,EAAG,CAC7D,IAAMgF,EAAUhF,EAYhB,GAXA,GAAc,EACd,EAAa,KACb,EAAU,KACV0B,EAAM,WAAWJ,EAAO,EACxBkB,EAAM,EACN,MAAM,QAAQ,IAAI,CACdpD,EAAQ,KAAOT,GAAc,EAAI,IAAA,GACjCqG,GAAS,cACHR,EAAOQ,EAAQ,aAAa,CAAC,CAAC,UAAY,IAAA,EAAS,EACnD,IAAA,EACV,CAAC,EACG,CAACC,EACD,OACJ,GAAM,CAAE,wBAAyB,MAAMvC,EAAS,EAChD,GAAI,CAACwC,EACD,MAAM7F,GAAQ,GAAG,oBAAqBuB,EAAQ,sBAAsB,EAExE,IAAM8C,EAAQ,IAAI,gBAAgB,CAAC,CAAC,YAAa5B,CAAQ,CAAC,CAAC,EACvDkD,GAAS,UACTtB,EAAM,OAAO,gBAAiBsB,EAAQ,QAAQ,EAC9CG,GACAzB,EAAM,OAAO,2BAA4ByB,CAAqB,EAElE,OAAO,SAAS,OAAO,GAAGD,EAAqB,GAAGxB,EAAM,SAAS,GAAG,CACxE,CACJ,EACA,OAAOgB,CACX,CACA,SAASzC,GAAQ,EAAO,CACpB,GAAI,CACA,IAAM2C,EAAMlD,EAAM,QAAQH,EAAO,EAC3B9C,EAAQmG,EAAM,KAAK,MAAMA,CAAG,EAAI,KACtC,OAAOnG,GAAO,QAAQ,aAAeA,EAAQ,IACjD,MACM,CACF,OAAO,IACX,CACJ,CCxYA,IAAM2G,GAAc,cAEhB/xC,GAAO,CAAC,EACRiyC,GAAU,IAAI,KAAK,YAAY,IAAI,EAEvC,SAAgBC,GAAQ,EAAM,EAAS,KAAM,CAC3C,GAAOC,GAAQ,CAAC,EAChB,GAAU,IAAI,KAAK,YAAYC,CAAM,CACvC,CAEA,SAASC,GAAO,EAAK,CACnB,OAAO5M,EACJ,MAAM,GAAG,CAAC,CACV,QAAQ,EAAO,IAAU2F,IAAkCmB,GAAQvsC,EAAI,CAC5E,CAEA,SAASsyC,GAAK,EAAM,EAAQ,CAC1B,OAAOtI,EAAK,QAAQ+H,IAAc,EAAO,IACvCvG,GAAU,OAAO,OAAOA,EAAQoC,CAAI,EAAI,OAAOpC,EAAOoC,EAAK,EAAI2E,CACjE,CACF,CAEA,SAAgBC,EAAE,EAAK,EAAQ,CAC7B,IAAMpH,EAAQiH,GAAO5M,CAAG,EAExB,GAAI,OAAO2F,GAAU,SAAU,OAAOkH,GAAKlH,EAAOI,CAAM,EAExD,GAAIJ,GAAS,OAAOA,GAAU,UAAYI,GAAU,UAAWA,EAAQ,CACrE,IAAMiH,EAAOrH,EAAM6G,GAAQ,OAAO,OAAOzG,EAAO,KAAK,CAAC,IAAMJ,EAAM,MAElE,GAAI,OAAOqH,GAAS,SAAU,OAAOH,GAAKG,EAAMjH,CAAM,CACxD,CAEA,OAAO/F,CACT,CChCA,IAAMiN,GAAM,sBAECC,GAAQ,CACnB,SACA,UACA,QACA,eACA,wBACA,uBACA,mBACF,EAEA,SAAShG,GAAK,EAAQ,CACpB,GAAI,CACF,OAAO,KAAK,MAAM,aAAa,QAAQ+F,EAAG,GAAK,MAAM,CAAC,GAAGnF,IAAW,IACtE,MAAQ,CACN,OAAO,IACT,CACF,CAEA,SAASqF,GAAK,EAAQ,EAAU,CAC9B,IAAMC,EAAM,KAAK,MAAM,aAAa,QAAQH,EAAG,GAAK,IAAI,EAExD,EAAInF,GAAUkB,EACd,aAAa,QAAQiE,GAAK,KAAK,UAAUG,CAAG,CAAC,CAC/C,CAEA,SAAgBpE,GAAS,EAAM,CAC7B,OAAO9B,GAAKmG,EAAK,MAAM,GAAKA,EAAK,UAAY,IAC/C,CAEA,SAAgBC,GAAO,EAAM,CAC3B,IAAMF,EAAM,KAAK,MAAM,aAAa,QAAQH,EAAG,GAAK,IAAI,EAExD,OAAOG,EAAIC,EAAK,QAChB,aAAa,QAAQJ,GAAK,KAAK,UAAUG,CAAG,CAAC,CAC/C,CAEA,SAAgBG,GAAY,EAAM,CAChC,MAAO,GAAG,SAAS,SAASF,EAAK,KAAK,UACxC,CAEA,SAAgBG,GAAa,EAAM,CACjC,IAAM5C,EAAQ,IAAI,gBAAgB,CAChC,CAAC,cAAe,UAAUyC,EAAK,OAAO,MAAM,EAC5C,CAAC,WAAYA,EAAK,QAAQ,EAC1B,CAAC,QAASH,GAAM,KAAK,GAAG,CAAC,EACzB,CAAC,YAAa,GAAG,SAAS,SAASG,EAAK,MAAM,EAC9C,CAAC,2BAA4B,GAAG,SAAS,SAASA,EAAK,MAAM,EAC7D,CAAC,6BAA8B,MAAM,EACrC,CAAC,gBAAiBE,GAAYF,CAAI,CAAC,CACrC,CAAC,EAED,MAAO,GAAGA,EAAK,OAAO,aAAazC,EAAM,SAAS,GACpD,CAEA,eAAsB6C,GAAO,EAAM,EAAO,CACxC,IAAM5D,EAAW,MAAM,MAAM,GAAGwD,EAAK,OAAO,WAAY,CACtD,OAAQ,OACR,QAAS,CACP,eAAgB,mBAChB,OAAQ,mBACR,cAAe,UAAU1F,GAC3B,EACA,KAAM,KAAK,UAAU,CACnB,YAAa,UAAU0F,EAAK,OAAO,OACnC,cAAe,CAACE,GAAYF,CAAI,CAAC,EACjC,2BAA4B,MAC9B,CAAC,CACH,CAAC,EAEK9C,EAAO,MAAMV,EAAS,KAAK,CAAC,CAAC,WAAa,CAAC,EAAE,EAEnD,GAAI,CAACA,EAAS,GACZ,MAAU,MACRU,EAAK,mBAAqBA,EAAK,OAASwC,EAAE,6BAA6B,CACzE,EAGF,GAAIxC,EAAK,cACP,MAAU,MAAMwC,EAAE,uBAAuB,CAAC,EAK5C,OAFAI,GAAKE,EAAK,OAAQ9C,EAAK,SAAS,EAEzBA,EAAK,SACd,CCpFA,SAASmD,GAAO,EAAW,CACzB,IAAMC,EAAQ,IAAI,IAEZC,GAAQ,EAAO,IACf/J,aAAiB,MACnB8J,EAAM,IAAIE,EAAMhK,CAAK,EACd,MAGL,MAAM,QAAQA,CAAK,EACdA,EAAM,KAAK,EAAK,IAAO+J,EAAKE,EAAG,GAAKD,EAAI,GAAIE,GAAE,CAAA,EAEnDlK,GAAO,cAAgB,OAClB,OAAO,YACZ,OAAO,QAAQA,CAAK,CAAA,CAAE,KAAG,CAAG7D,EAAK8N,KAAG,CAClC9N,EACA4N,EAAKE,EAAG,GAAKD,EAAI,GAAI7N,GAAG,CAAA,CAAA,CAAA,EAKvB6D,EAGT,MAAM,CAAG,KAAM+J,EAAKI,EAAW,WAAW,EAAG,OAAK,CACpD,CAEA,SAAgBC,GAAU,EAAM,CAC9B,IAAM7M,EAAK5mC,EAAA,CACT,MAAO,GACP,SAAU,KACV,QAAS,IAAI,CAAA,EAGXoxC,EAAS,KAEPsC,MAAc,CAClB,IAAMhH,EAAO8B,GAASqE,CAAI,EAY1B,OAVKnG,GAEL,IAAWwB,GAAmB,CAC5B,OAAQ2E,EAAK,OACb,SAAUnG,EACV,YAAaqG,GAAYF,CAAI,EAC7B,MAAOH,GACP,SAAUG,EAAK,Q,GAGVzB,GAVW,IAWpB,EAEMuC,EAAgB,SAAY,CAChC,IAAMjH,EAAOgH,EAAK,EAElB,GAAE,CAAGhH,EAAM,MAAU,MAAM6F,EAAE,kBAAkB,CAAA,EAI/C,OAFI7F,EAAK,QAAQ,EAAE,GAAG,MAAMA,EAAK,QAAO,EAEjCA,EAAK,cAAa,CAC3B,EAEA,MAAM,CACJ,QAEA,QAAS,CACP,MAAO,EAAQ8B,GAASqE,CAAI,CAC9B,EAEA,UAAW,CACT,MAAO,EAAQa,EAAK,CAAA,EAAI,YAAW,CACrC,EAEA,MAAM,UAAU,EAAU,CACxB,MAAMA,EAAK,CAAA,CAAG,UAAS,CAAG,UAAQ,CAAA,CACpC,EAEA,MAAM,UAAW,CACf,IAAME,EAAS,MAAMF,EAAK,CAAA,CAAG,SAAQ,EAKrC,MAHA,GAAM,SAAWE,EAAO,SACxB,EAAM,MAAQ,GAEPA,CACT,EAEA,MAAM,SAAU,CACd,IAAMlH,EAAOgH,EAAK,EAIlB,GAFA,EAAM,SAAW,KAEf,CAAGhH,EAAM,OAAO,KAElB,IAAMmH,EAAUnH,EAAK,OAAM,CAAA,EAAI,SACzBkC,EAAW,MAAMlC,EAAK,SAAQ,CAAA,CAAG,UAAY,IAAI,EAIvD,GAFAA,EAAK,OAAM,EAET,CAAGkC,GAAU,qBAAsB,OAAO,KAE5C,IAAMwB,EAAQ,IAAI,gBAAe,CAC/B,UAAW5B,GAASqE,CAAI,EACxB,yBAAwB,GAAK,SAAS,SAASA,EAAK,M,GAKtD,OAFIgB,GAASzD,EAAM,IAAI,gBAAiByD,CAAO,EAEzC,GAAIjF,EAAS,qBAAoB,GAAIwB,GAC7C,EAEA,QAAS,CACPsD,EAAK,CAAA,EAAI,OAAM,EACfZ,GAAOD,CAAI,EACX,EAAS,IACX,EAEA,MAAM,MAAM,EAAU,EAAS,CAAA,EAAO,CACpC,GAAM,CAAE,OAAM,SAAUK,GAAOM,CAAS,EAClChC,EAAO,CACX,OAAQ,mBACR,cAAe,MAAMmC,EAAa,C,EAEhCG,EAEAX,EAAM,MACR,EAAO,IAAI,SAEXW,EAAK,OACH,aACA,KAAK,UAAS,CAAG,MAAOlF,EAAU,UAAWlC,CAAI,CAAA,CAAA,EAEnDoH,EAAK,OACH,MACA,KAAK,UACH,OAAO,YAAW,CAAA,GACZX,EAAM,KAAI,CAAA,CAAA,CAAI,KAAK,EAAM,IAAE,CAAMI,EAAE,CAAGF,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA,EAKhD,CAAA,GAAAF,EAAM,OAAM,CAAA,CAAA,CAAI,SAAS,EAAM,IAAO,CACxCW,EAAK,OAAO,OAAOP,CAAE,EAAGQ,CAAI,CAC9B,CAAC,IAED,EAAQ,gBAAkB,mBAC1B,EAAO,KAAK,UAAS,CAAG,MAAOnF,EAAU,WAAS,CAAA,GAGpD,IAAMS,EAAW,MAAM,MAAMwD,EAAK,QAAO,CACvC,OAAQ,OACR,UACA,KAAMiB,CAAI,CAAA,EAGN/D,EAAO,MAAMV,EAAS,KAAI,CAAA,CAAG,WAAK,CAAA,EAAA,EAExC,GAAIA,EAAS,SAAW,KAAOA,EAAS,SAAW,IACjD,MAAU,MACRU,EAAK,mBAAqBA,EAAK,OAASwC,EAAE,aAAa,CAAA,EAI3D,GAAIxC,EAAK,QAAQ,OACf,MAAU,MAAMA,EAAK,OAAO,IAAK,GAAQuD,EAAI,OAAO,CAAA,CAAE,KAAK,IAAI,CAAA,EAGjE,OAAOvD,EAAK,IACd,C,CAEJ,CC3KA,IAAMiE,GAAS,OAAO,QAAQ,EAE9B,SAAgBC,GAAa,EAAM,CACjC,IAAMrN,EAAK3mC,EAAA,CAAY,KAAM,SAAS,SAAU,OAAQ,SAAS,MAAM,CAAA,EAEjEi0C,MAAe,CACnB,EAAM,KAAO,SAAS,SACtB,EAAM,OAAS,SAAS,MAC1B,EAIA,OAFA,iBAAiB,WAAYA,CAAM,EAE7B,CACJ,QAEA,IAAI,UAAW,CACb,OAAOtN,EAAM,KAAK,MAAMuN,EAAK,MAAM,CAAA,CAAE,MAAM,GAAG,CAAA,CAAE,OAAO,OAAO,CAChE,EAEA,IAAI,OAAQ,CACV,OAAO,IAAI,gBAAgBvN,EAAM,MAAM,CACzC,EAEA,KAAK,EAAI,CACP,MAAM,GAAIuN,IAAOC,GACnB,EAEA,GAAG,EAAI,CACL,QAAQ,UAAS,CAAA,EAAK,GAAE,GAAKD,IAAOC,GAAE,EACtCF,EAAM,EACN,SAAQ,CAAG,IAAK,CAAC,CAAA,CACnB,EAEA,QAAQ,EAAI,CACV,QAAQ,aAAY,CAAA,EAAK,GAAE,GAAKC,IAAOC,GAAE,EACzCF,EAAM,CACR,C,CAEJ,CAEA,SAAgBG,GAAc,EAAQ,CACpC7L,GAAWwL,GAAQM,CAAM,CAC3B,CAEA,SAAgBC,IAAY,CAC1B,OAAO5M,GAAWqM,EAAM,CAC1B,C,mHChDA,SAAAS,GAAA,EAAA,EAAA,CAIC,IAAAC,EAAGx0C,GAAA,EACDy0C,EAACv0C,EADHs0C,CAAG,EACDE,EAAAx0C,EAAAu0C,CAAC,E,oBAAD/L,EAAA+L,CAAC,EADH/L,EAAA8L,CAAG,EAAHtP,EAAA0P,EAAAJ,CAAG,CAFI,C,6FCFR,SAAAO,GAAA,EAAA,EAAA,C,QAGE,IAAIC,EAAkB10C,EAAAq0C,EAAA,QAAA,EAAG,iBAAiB,EAAe3H,EAAIzsC,EAAAo0C,EAAAx0C,EAAA,EAEvDi0C,EAASC,GAAS,EAExB,SAASY,EAAO,EAAO,CACjB9O,EAAM,SAAWA,EAAM,SAAWA,EAAM,UAAYA,EAAM,QAC1DA,EAAM,SAAW,IAErBA,EAAM,eAAc,EACpBA,EAAM,gBAAe,EAErBiO,EAAO,GAAEO,EAAA,EAAA,EACX,CAGD,IAAAO,EAAC90C,GAAA,EAADqoC,GAAAyM,EAAC,IAAA,CAAA,GAAKlI,EAAI,MAASgI,EAAK,EAAA,KAAAG,EAAA,QAAkCF,CAAM,GAAA,KAAhCb,EAAO,KAAIO,EAAA,EAAA,CAAA,CAAA,EAA3C,IAAAD,EAAAl0C,EAAA00C,CAAC,E,oBAADxM,EAAAwM,CAAC,EAADhQ,EAAA0P,EAAAM,CAAC,E,GAFM,C,wJChBR,SAAAG,GAAA,EAAA,EAAA,C,QAEE,IAAIC,EAAO30C,EAAAg0C,EAAA,QAAA,OAAGtC,EAAE,YAAY,CAAA,EAG7B,IAAAmC,EAAG/zC,GAAA,EAED80C,EAAI30C,EAAAC,EAFN2zC,CAAG,EAAA,CAAA,EAED3K,EAAA/oC,EAAAy0C,EAAI,EAAA,EAFN7M,EAAA8L,CAAG,EAEqB/O,MAAA1kC,EAAA8oC,EAAAyL,EAAK,CAAA,CAAA,EAF7BpQ,EAAA0P,EAAAJ,CAAG,E,GAFI,C,+NCHR,SAAAkB,GAAA,EAAA,EAAA,C,QAGE,IAAMC,EAAM,CACV,QAAS,+EACT,IAAK,qFACL,QAAS,yGACT,YAAa,uEACb,QAAS,mEACT,KAAM,kHACN,UAAW,yEACX,QAAS,gEACT,QAAS,2HACT,KAAM,oHACN,QAAS,0KACT,UAAW,mKACX,KAAM,yGACN,SAAU,sJ,yBAKX,IAAAJ,EAAIr0C,GAAA,EAAJ0nC,EAAA2M,EAAI,OAAAZ,EAAA,OAAA,CACcmB,EAAOR,EAAOS,KAAOD,GAAK,EAAA,IAAA,C,wBAA1B,IAAAA,MAAMv0C,EAAAy0C,CAAA,CAAA,CAAA,GAACV,MAAM/zC,EAAAy0C,CAAA,CAAA,CAAA,GAACD,MAAKx0C,EAAAy0C,CAAA,CAAA,CAAA,GACjC,IAAAE,EAAIl1C,GAAA,EACFm1C,EAAG30C,EADL00C,CAAI,EACF9Q,EAAA+Q,MACQR,EAAOG,EAAK,GAAA,EAAA,EADpBpN,EAAAyN,CAAG,EADLzN,EAAAwN,CAAI,E,OAAJrN,GAAAqN,EAAI,EAAA,aAAmBH,EAAI,GAAI,SAAO,IAAA,EAAtC3O,EAAA8O,EAAI,aAA4DZ,EAAK,CAAA,EAArElO,EAAA8O,EAAI,QAA0EZ,EAAK,CAAA,C,GAAnFpQ,EAAA0P,EAAAsB,CAAI,C,GAFRxN,EAAA6M,CAAI,EAAJrQ,EAAA0P,EAAAW,CAAI,C,UADIZ,EAAA,MAAA,QAAMyB,EAAAP,CAAA,C,aAFT,CCjBR,IAAaQ,GAAW,GACtBC,EAAM,QAAQ,KAAM,GAAWC,EAAO,SAAS,EAEpCC,GAAc,GACzB,CACEF,EAAM,OAAO,KAAM,GAAUnI,EAAM,WAAW,QAAQ,CAAC,GAAK,CAC1D,UACAkE,EAAE,sBAAsB,EACxB,SACF,EACAiE,EAAM,YAAc,CAClB,MACAjE,EAAE,6BAA8B,CAAE,MAAOiE,EAAM,oBAAqB,CAAC,EACrE,MACF,EACA,CAACA,EAAM,WAAa,CAAC,UAAWjE,EAAE,sBAAsB,EAAG,MAAM,EACjEiE,EAAM,OACJ,CAACA,EAAM,eAAiB,CACtB,cACAjE,EAAE,0BAA0B,EAC5B,MACF,EACFiE,EAAM,iBAAmB,CAAC,UAAWjE,EAAE,sBAAsB,EAAG,MAAM,EACtEiE,EAAM,qBAAuB,CAAC,OAAQjE,EAAE,mBAAmB,EAAG,MAAM,EACpEiE,EAAM,aAAe,CAAC,YAAajE,EAAE,wBAAwB,EAAG,KAAK,EACrEgE,GAAQC,CAAK,GAAK,CAAC,UAAWjE,EAAE,sBAAsB,EAAG,KAAK,CAChE,CAAC,CAAC,OAAO,OAAO,EC5BlB,SAAgBoE,GAAY,EAAO,GAAI,CACrC,IAAM/P,EAAKjlC,EAAA,CAAY,QAAO,CAAG,IAAI,EAAG,MAAO,IAAI,CAAA,EAEnD,MAAM,CACJ,OACA,QAEA,IAAI,QAAS,CACX,OAAOilC,EAAM,QAAQ,GAAE,EAAG,CAC5B,EAEA,IAAI,OAAQ,CACV,OAAQA,EAAM,QAAQ,OAAS,GAAKiK,EAAO,CAC7C,EAEA,OAAQ,CACN,EAAM,QAAO,CAAI,IAAI,CACvB,EAEA,QAAQ,EAAQ,CACd,EAAM,QAAO,CAAA,GAAOjK,EAAM,QAASgQ,CAAM,CAC3C,EAEA,MAAO,CACDhQ,EAAM,QAAQ,OAAS,IAAG,EAAM,QAAUA,EAAM,QAAQ,MAAM,EAAC,EAAI,EACzE,EAEA,QAAQ,EAAO,CACb,EAAM,MAAQiQ,CAChB,C,CAEJ,C,qNC/BA,SAAAE,GAAA,EAAA,EAAA,C,QAEE,IAAIC,EAAoBl1C,EAAA+yC,EAAA,OAAA,EAAG,EAAK,EAE1BoC,EAAKl1C,MAAA8yC,EAAA,MAAkB,KAAK,EAC5BqC,EAAIn1C,MAAAC,EAAYi1C,CAAK,EAAApC,EAAA,MAAW,CAAC,EACjCgC,EAAK90C,MAAA8yC,EAAA,MAAkB,MAAM,KAAK,EAClCsC,EAAOp1C,MAAA8yC,EAAA,MAAkB,MAAM,QAAQ,OAAS,CAAC,EACjDuC,EAAKr1C,MAAAC,EAAY60C,CAAK,IAAK,KAAuBhC,EAAA,QAAAA,EAAA,MAAA,KAAO7yC,EAAAk1C,CAAI,EAAAl1C,EAAG60C,CAAK,CAAA,E,uBAI1E,IAAAQ,EAAGz1C,GAAA,EACD6zC,EAAItzC,EADNk1C,CAAG,EACDtN,EAAA3nC,EAAAqzC,EAAI,EAAA,EAUJf,EAAGryC,EAVHozC,EAAI,CAAA,EAWF6B,EAAAn1C,EADFuyC,CAAG,EACD6C,EAAAn1C,EAAAk1C,EAAA,EAAA,EAMAE,EAAAn1C,EANAi1C,EAAA,CAAA,EAMAG,EAAAr1C,EAAAo1C,EAAA,EAAA,EAPF5O,EAAA8L,CAAG,EAXL9L,EAAAyO,CAAG,E,cAAH/P,EAAA+P,EAAG,aAAAhC,CAAA,E,OAYC,EAAA,SAGW2B,EAAI,GAAA,CAAAh1C,EAAKm1C,CAAO,E,OAG3B,EAAA,SAGWH,EAAI,GAAA,CAAAh1C,EAAKo1C,CAAK,E,aArBC7E,EAAE,gBAAgB,MAE5CvwC,EAAA60C,CAAK,IAAK,KACPtE,EAAE,iBAAgB,CAAI,MAAKvwC,EAAEi1C,CAAK,CAAA,CAAC,eAAc,EAAI,KAAIj1C,EAAEk1C,CAAI,CAAA,CAAC,eAAc,C,GAC9E3E,EAAE,oBAAmB,CACnB,MAAKvwC,EAAEi1C,CAAK,CAAA,CAAC,eAAc,EAC3B,KAAIj1C,EAAEk1C,CAAI,CAAA,CAAC,eAAc,EACzB,MAAKl1C,EAAE60C,CAAK,CAAA,CAAC,eAAc,C,OAU/BtE,EAAE,mBAAmB,MAMrBA,EAAE,eAAe,C,GAXlBxM,EAAA,QAAAuR,MAAAzC,EAAA,OAIuB,MAAM,CAAA,EAE7B9O,EAAA,QAAAyR,MAAA3C,EAAA,OAIuB,SAAS,CAAA,EAtBpCzP,EAAA0P,EAAAuC,CAAG,C,UADSxC,EAAA,QAAA7yC,EAAAm1C,CAAO,GAAAn1C,EAAIo1C,CAAK,IAAAd,EAAAP,CAAA,C,aAFvB,C,aCTR,SAAgB8B,IAAiB,CAC/B,IAAMjR,EAAKrkC,EAAA,CAAY,OAAQ,KAAM,QAAS,IAAI,CAAA,EAE5C2sC,MAAc,CAClB,EAAM,OAAS,KACf,EAAM,QAAU,IAClB,EAEM4I,EAAS,GAAW,CACxB,EAAM,OAAS,KACf,EAAM,QAAUC,GAAQ,SAAW,OAAOA,CAAM,CAClD,EAEA,MAAM,CACJ,QACA,QACA,QAEA,IAAI,EAAQ,CACV,EAAM,QAAU,KAChB,EAAM,OAASC,CACjB,EAEA,MAAM,QAAQ,EAAM,EAAS,KAAM,CACjC9I,EAAK,EAEL,GAAI,CACF,IAAM0E,EAAU,MAAMqE,EAAI,GAAO,GAIjC,OAFID,IAAQ,EAAM,OAASA,GAEpBpE,CACT,OAASmE,EAAQ,CAGf,OAFAD,EAAMC,CAAM,EAEL,IACT,CACF,C,CAEJ,CCrCA,IAAMG,GAAa,IAAI,IAEvB,SAAS/F,IAAS,CAChB,OAAO,SAAS,gBAAgB,MAAQ,IAAA,EAC1C,CAEA,SAASgG,GAAU,EAAM,EAAM,CAC7B,IAAM3S,EAAM,GAAG4S,EAAK,GAAGjG,GAAO,GAAK,KAInC,OAFK+F,GAAW,IAAI1S,CAAG,GAAG0S,GAAW,IAAI1S,EAAK6S,EAAKlG,GAAO,CAAC,CAAC,EAErD+F,GAAW,IAAI1S,CAAG,CAC3B,CAEA,IAAM8S,OACJH,GACE,MACC,GACC,IAAI,KAAK,eAAeI,EAAM,CAC5B,IAAK,UACL,MAAO,QACP,KAAM,SACR,CAAC,CACL,EAEIC,OACJL,GACE,SACC,GACC,IAAI,KAAK,eAAeI,EAAM,CAC5B,IAAK,UACL,MAAO,QACP,KAAM,UACN,OAAQ,SACV,CAAC,CACL,EAEIE,OACJN,GACE,WACC,GAAS,IAAI,KAAK,mBAAmBI,EAAM,CAAE,QAAS,MAAO,CAAC,CACjE,EAEIG,GAAQ,CACZ,CAAC,OAAQ,OAAW,EACpB,CAAC,QAAS,MAAU,EACpB,CAAC,OAAQ,MAAS,EAClB,CAAC,MAAO,KAAQ,EAChB,CAAC,OAAQ,IAAO,EAChB,CAAC,SAAU,GAAK,CAClB,EAEA,SAASC,GAAO,EAAK,CACnB,GAAI,CAACC,EAAK,OAAO,KAEjB,IAAMrF,EAAK,IAAI,KAAKqF,CAAG,EAEvB,OAAO,OAAO,MAAMrF,EAAG,QAAQ,CAAC,EAAI,KAAOA,CAC7C,CAEA,SAAgBsF,GAAI,EAAK,EAAA,IAAiB,CACxC,IAAMtF,EAAKoF,GAAOC,CAAG,EAErB,OAAOrF,EAAK+E,GAAI,CAAC,CAAC,OAAO/E,CAAE,EAAInM,CACjC,CAEA,SAAgB0R,GAAO,EAAK,EAAA,IAAiB,CAC3C,IAAMvF,EAAKoF,GAAOC,CAAG,EAErB,OAAOrF,EAAKiF,GAAO,CAAC,CAAC,OAAOjF,CAAE,EAAInM,CACpC,CAEA,SAAgB2R,GAAM,EAAK,EAAA,IAAiB,CAC1C,IAAMxF,EAAKoF,GAAOC,CAAG,EAErB,GAAI,CAACrF,EAAI,OAAOnM,EAEhB,IAAM4R,EAAMzF,EAAG,QAAQ,EAAI,KAAK,IAAI,EAEpC,IAAK,GAAM,CAAC0F,EAAMpI,KAAS6H,GACzB,GAAI,KAAK,IAAIM,CAAG,GAAKnI,EACnB,OAAO4H,GAAS,CAAC,CAAC,OAAO,KAAK,MAAMO,EAAMnI,CAAI,EAAGoI,CAAI,EAIzD,OAAOR,GAAS,CAAC,CAAC,OAAO,KAAK,MAAMO,EAAM,GAAI,EAAG,QAAQ,CAC3D,CAEA,SAAgBE,GAAO,EAAQ,EAAA,IAAiB,CAC9C,IAAMC,GAAQ5N,GAAU,CAAC,EAAA,CAAG,OAAO,OAAO,EAE1C,OAAO4N,EAAK,OAASA,EAAK,KAAK,GAAG,EAAI/R,CACxC,C,sIC9FA,SAAAiS,GAAA,EAAA,EAAA,CAIQ,IAAAC,EAAE52C,EAAA,E,QAFR,IAAI8yC,EAAa7yC,EAAAkyC,EAAA,QAAA,OAAGtC,EAAE,eAAe,CAAA,EAKtC,IAAAkD,EAAIjzC,GAAA,EACF80C,EAAM10C,EADR6yC,CAAI,EAEFW,EAAIvzC,EADJy0C,EAAM,CAAA,EACNC,EAAAz0C,EAAAszC,EAAI,EAAA,EAFNxN,EAAA6M,CAAI,E,OACFnO,EAAAgQ,EAAM,aAA4C9B,EAAK,CAAA,EAAvDlO,EAAAgQ,EAAM,mBAAqEgC,CAAE,EAC7EhS,EAAA8O,EAAI,KAAkCkD,CAAE,E,cAF1ClU,EAAA0P,EAAAW,CAAI,E,GAFG,C,mXCLR,SAAAmE,EAAA,EAAA,EAAA,C,QAIE,IAAIC,EAAOx2C,EAAAwxC,EAAA,QAAA,EAAG,IAAI,EAAEiF,EAAIz2C,EAAAwxC,EAAA,OAAA,EAAG,IAAI,EAAEkF,EAAI12C,EAAAwxC,EAAA,OAAA,EAAG,IAAI,EAAEmF,EAAG32C,EAAAwxC,EAAA,MAAA,EAAG,EAAK,EAG1D,IAAAoF,EAAO72C,GAAA,E,MAAP,IAAAwxC,EAAAtxC,EAAA22C,CAAO,E,MAEH,IAAAvF,EAAGvxC,GAAA,EACDi3C,EAAG92C,EADLoxC,CAAG,EACD2F,EAAA/2C,EAAA82C,CAAG,E,MAEC,IAAAG,EAAGx3C,GAAA,EACDy3C,EAAEl3C,EADJi3C,CAAG,EACDxQ,EAAAxmC,EAAAi3C,EAAE,EAAA,EAAFC,EAAAj3C,EAAAg3C,EAAE,CAAA,E,OAC+B,IAAAnF,EAAA5xC,MAAA8uC,EAAE,WAAU,CAAI,MAAOsH,EAAK,CAAA,CAAC,YAAW,CAAA,CAAA,CAAA,EAA/DR,GAAGvE,EAAA,C,WAAO,OAAAiF,EAAI,C,uCAApBA,EAAI,GAAAzD,EAAAP,CAAA,C,GAFVnN,EAAA2R,CAAG,EACmB5U,MAAAhiC,EAAAomC,EAAA8P,EAAK,CAAA,CAAA,EAD3BzU,EAAA0P,EAAAyF,CAAG,C,UADDV,EAAK,GAAAvD,EAAAgE,CAAA,C,sBAMC,IAAA3F,EAAC1xC,GAAA,EAADs0C,EAAAh0C,EAAAoxC,EAAC,EAAA,EAAkBhP,MAAAhiC,EAAA4zC,EAAAuC,EAAI,CAAA,CAAA,EAAvB1U,EAAA0P,EAAAH,CAAC,C,UAAPmF,EAAI,GAAAxD,EAAAqE,CAAA,C,GAPV/R,EAAAwR,CAAG,EAAH,IAAAQ,EAAAp3C,EAAA42C,EAAG,CAAA,E,MAWD,IAAAU,EAAG53C,GAAA,EAAH63C,EAAAz3C,EAAAw3C,CAAG,E,mBAAHlS,EAAAkS,CAAG,EAAH1V,EAAA0P,EAAAgG,CAAG,C,4BAZPlS,EAAA8L,CAAG,EAAHtP,EAAA0P,EAAAJ,CAAG,C,WADDmF,EAAK,GAAIC,EAAI,GAAAjF,EAAA,UAAAyB,EAAA6D,CAAA,C,GAkBjB,IAAAa,EAAGx3C,EAAAoxC,EAAA,CAAA,EAAHqG,EAAA33C,EAAA03C,CAAG,E,oBAAHpS,EAAAoS,CAAG,EAnBLpS,EAAAqR,CAAO,EAAPtU,MAAA,EAAA/hC,GAAAq2C,EAAO,EAAA,UAAA,KAAAC,EAAA,CAAA,cAAoCF,EAAG,CAAA,CAAA,CAAA,EAA9C5U,EAAA0P,EAAAmF,CAAO,E,GAFA,C,sDCLR,SAAAkB,GAAA,EAAA,EAAA,C,QAKE,IAAM7G,EAASC,GAAS,EAExB,SAASY,EAAO,EAAO,CACjB9O,EAAM,OAAO,QAAQ,yBAAyB,GAC9C,aAAY,CAAA,EAAI,SAAQ,GAE5BiO,EAAO,GAAEO,EAAA,EAAA,CACX,CAGD,IAAAuG,EAAEv3C,GAAA,EAAF+wC,EAAA7wC,EAAAq3C,CAAE,E,oBAAFxS,EAAAwS,CAAE,EAAFrV,EAAA,QAAAqV,EAAyCjG,CAAM,EAA/C/P,EAAA0P,EAAAsG,CAAE,E,GAFK,C,+MCbR,SAAAE,GAAA,EAAA,EAAA,C,QAEE,IAAIjS,EAAOllC,EAAA0wC,EAAA,QAAA,GAAa,EAAE,EAG3B,IAAAH,EAAGzwC,GAAA,EACDs3C,EAAAn3C,EADFswC,CAAG,EACDvN,EAAAoU,CAAA,EAQA,IAAAjE,EAAMjzC,EARNk3C,EAAA,CAAA,EAQAxR,EAAAzlC,EAAAgzC,EAAM,EAAA,EATR1O,EAAA8L,CAAG,E,MACDpN,EAAAiU,EAAA,aAAA1G,EAAA,KAAA,EAAAvN,EAAAiU,EAAA,cAAA1G,EAAA,WAAA,E,QAQsE,KAAAtC,EAAE,WAAW,CAAA,C,EARnFxM,EAAA,UAAAwV,EAMa,GAAUlV,EAAM,MAAQ,SAAOwO,EAAA,SAAA,CAAA,EAN5C/M,EAAAyT,EAAAlS,CAAA,EAQAtD,EAAA,QAAAuR,EAAM,SAAA,GAAAkE,EAAA,C,4BATRpW,EAAA0P,EAAAJ,CAAG,E,GAFI,C,uKCHR,SAAAiH,GAAA,EAAA,EAAA,C,QAKE,IAAMC,EAAKj3C,MAAAkwC,EAAA,QACD,IAAK,GAAM,OAAagH,GAAW,SAAQ,CAAK,MAAOA,CAAM,EAAKA,CAAM,CAAA,E,uBAKjFpH,GAAKK,EAAA,C,yFAEL,IAAAJ,EAAGhwC,GAAA,EACDq3C,EAAK/2C,EADP0vC,CAAG,EAECsH,EAAKh3C,EADP+2C,CAAK,EAEDX,EAAEp2C,EADJg3C,CAAK,EACHlT,EAAAsS,EAAE,OAAAn2C,EACM22C,CAAK,EAAA12C,GAAA,EAAI,IAAI,CACjB,IAAA+2C,EAAAz3C,GAAA,EAAA+yC,EAAApyC,EAAA82C,EAAA,EAAA,E,OAAAlT,GAAAkT,EAAA,EAAA,GAAAh3C,EACSi3C,CAAI,CAAA,CAAC,MAAQ,aAAe,GAAE,GAAAj3C,EAAGi3C,CAAI,CAAA,CAAC,KAAO,uBAAyB,IAAE,EAChFrU,EAAA0P,EAAAtyC,EAAAi3C,CAAI,CAAA,CAAC,OAAS,EAAE,C,GAFjB9W,EAAA0P,EAAAmH,CAAA,C,GAFJrT,EAAAwS,CAAE,EADJxS,EAAAoT,CAAK,EASL,IAAAG,EAAK/2C,EATL42C,CAAK,EASL3B,EAAAr1C,EAAAm3C,CAAK,E,gBAALvT,EAAAuT,CAAK,EAVPvT,EAAAmT,CAAK,EADPnT,EAAA8L,CAAG,EAAHtP,EAAA0P,EAAAJ,CAAG,C,UAHSG,EAAA,QAAA,EAACyB,EAAAP,CAAA,EAAAO,EAAAwF,EAAA,EAAA,C,aAFR,C,klDCRR,SAAAsB,GAAA,EAAA,EAAA,C,QAYE,IAAMC,EAAM,CACT,CAAA,UAAW9K,EAAE,wBAAwB,EAAA,CAAK,QAAS,EAAK,CAAA,EACxD,CAAA,UAAWA,EAAE,wBAAwB,EAAA,CAAK,QAAS,EAAI,CAAA,E,CACvD,aAAcA,EAAE,2BAA2B,EAAK,CAAA,WAAY,EAAI,C,GAe7D+K,EAAO,CACX,GACA/K,EAAE,wBAAwB,EACxB,CAAA,MAAOA,EAAE,qBAAqB,EAAG,KAAM,EAAI,EAC3C,CAAA,MAAOA,EAAE,4BAA4B,EAAG,KAAM,EAAI,EACpDA,EAAE,2BAA2B,C,EAG3BgL,EAAUj3C,EAAMC,EAAA,CAAA,CAAA,CAAA,EAChBi3C,EAAUl3C,EAAO,EAAI,EACrBm3C,EAAOn3C,EAAO,SAAS,EACvBo3C,EAASp3C,EAAO,EAAE,EAClBq3C,EAAQr3C,EAAO,EAAE,EACjBs3C,EAASt3C,EAAMC,EAAC,IAAI,GAAG,CAAA,EACvBs3C,EAASv3C,EAAO,EAAK,EACrB0wC,EAAO1wC,EAAO,EAAK,EACnB2zC,EAAU3zC,EAAO,IAAI,EAEnBw3C,EAASt3C,MAAY62C,EAAO,MAAI,CAAG7X,KAASA,IAAG/+B,EAAKg3C,CAAI,CAAA,CAAA,GAAI,IAAC,CAAA,CAAA,EAEnE,eAAeM,GAAO,CACpBrX,EAAA8W,EAAU,EAAI,EAEd,IAAMQ,EAAO,MAAKnJ,EAAA,SAAU,YAAOA,EAAA,IAC7B,MAAM;;;;;;;;IAAK,CACb,QAAOpuC,EAAEq3C,CAAS,CAAA,CAAC,SAAW,KAC9B,WAAUr3C,EAAEq3C,CAAS,CAAA,CAAC,YAAc,KACpC,MAAKr3C,EAAEk3C,CAAK,GAAI,KAChB,MAAO,G,IAIXjX,EAAA8W,EAAU,EAAK,EAEXQ,IACFtX,EAAA6W,EAAUS,EAAK,QAAO,EAAA,EACtBtX,EAAAkX,EAAS,IAAI,IAAG,EAAA,EAEpB,CAEAG,EAAI,CAAA,CAAG,SAAW,CACZ,SAAS,OAAS,YAAU1Y,EAAE4U,CAAO,CAAA,EAAE,eAAc,CAC3D,CAAC,EAED,SAASgE,EAAK,EAAK,CACjBvX,EAAA+W,EAAOjY,EAAG,EAAA,EACVuY,EAAI,CACN,CAEA,SAASG,GAAS,CAChBxX,EAAAiX,EAAKl3C,EAAGi3C,CAAM,CAAA,CAAC,KAAI,EAAA,EAAA,EACnBhX,EAAAmX,EAAS,EAAK,EACdE,EAAI,CACN,CAEA,SAASI,GAAc,CACrBzX,EAAAgX,EAAS,EAAE,EACXQ,EAAM,CACR,CAEA,SAASE,EAAO,EAAI,CAClB,IAAMrW,EAAO,IAAI,IAAGthC,EAACm3C,CAAM,CAAA,EAE3B7V,EAAK,IAAIuR,CAAE,EAAIvR,EAAK,OAAOuR,CAAE,EAAIvR,EAAK,IAAIuR,CAAE,EAC5C5S,EAAAkX,EAAS7V,EAAI,EAAA,CACf,CAEA,IAAM6K,EAAGpsC,MAAAC,EAAY82C,CAAO,CAAA,CAAC,OAAS,GAAC92C,EAAIm3C,CAAM,CAAA,CAAC,OAAIn3C,EAAK82C,CAAO,CAAA,CAAC,MAAM,EAEzE,SAASc,GAAY,C,EACnBT,EAASn3C,EAAAmsC,CAAG,EAAG,IAAI,IAAQ,IAAI,IAAGnsC,EAAC82C,CAAO,CAAA,CAAC,IAAK,GAAW9G,EAAO,EAAE,CAAA,E,GACtE,CAEA,IAAM6H,EAAQ93C,MAAAC,EAAYg3C,CAAI,IAAK,SAAS,EAE5C,SAASc,EAAQ,EAAO,EAAQ,CAC9B,IAAMC,EAAOjM,EAAC9rC,EAAC63C,CAAQ,EAAG,wBAA0B,0BAAyB,CAAI,OAAK,CAAA,EAEtF,OAAOG,EAASlM,EAAE,iBAAgB,CAAI,MAAI,CAAA,EAAMiM,CAClD,CAEA,eAAeE,EAAK,EAAW,EAAU,CACvC,GAAE,CAAG,QAAQC,CAAQ,EAAG,OAExBjY,EAAAsQ,EAAO,EAAI,EAEX,IAAM4H,EAAQn4C,EAAG63C,CAAA,E;;W,sEAMXN,EAAO,MAAKnJ,EAAA,SAAU,YAAOA,EAAA,IAAW,MAAM+J,EAAUpL,CAAS,CAAA,EAIvE,GAFA9M,EAAAsQ,EAAO,EAAK,EAEV,CAAGgH,EAAM,OAEX,IAAMpK,EAASoK,EAAK,cAAgBA,EAAK,eAEzC,MAAMD,EAAI,EACDlJ,EAAA,SAAA,IAAGpuC,EACVo3C,CAAM,GAAIrK,EAAU,MAChBjB,EAAE,kBAAiB,CAAI,KAAMgM,EAAQ3K,EAAO,MAAOA,EAAO,MAAM,EAAG,MAAOJ,EAAU,K,GACpF+K,EAAQ3K,EAAO,MAAOA,EAAO,MAAM,CAAA,CAE3C,CAEA,IAAMiL,OACJH,EAAI,CACA,IAAG,CAAA,GAAAj4C,EAAMm3C,CAAM,CAAA,CAAA,EAAAn3C,EACjB63C,CAAA,EACI/L,EAAE,gCAA+B,CAAI,MAAK9rC,EAAEm3C,CAAM,CAAA,CAAC,IAAI,CAAA,EACvDrL,EAAE,kCAAiC,CAAI,MAAK9rC,EAAEm3C,CAAM,CAAA,CAAC,IAAI,CAAA,CAAA,EAG3DkB,MAAsB,CAC1B,IAAMH,EAAWpM,EAAE,kCAAiC,CAAI,MAAK9rC,EAALk3C,CAAK,CAAA,CAAA,EAE7D,OAAOe,EAAI,CAAG,MAAKj4C,EAALk3C,CAAK,EAAE,OAAMl3C,EAANo3C,CAAM,CAAA,EAAAp3C,EAAIo3C,CAAM,EAAGtL,EAAE,gCAA+B,CAAI,UAAQ,CAAA,EAAMoM,CAAQ,CACrG,EAEMI,GAAOv4C,MAAAC,EACXg3C,CAAI,IAAK,UACLlL,EAAE,uBAAuB,EACzB9rC,EAAAg3C,CAAI,IAAK,aACPlL,EAAE,0BAA0B,EAC5BA,EAAE,uBAAuB,CAAA,EAIlC,IAAAmC,GAAGruC,GAAA,EAAHuuC,GAAAluC,EAAAguC,EAAG,E,CAEU,IAAAsK,EAAO,GAAA,C,mBAGN,IAAA3J,EAAA7uC,MAAA+rC,EAAE,sBAAsB,CAAA,EAFhC+I,GAAAjB,EAAA,C,6DAIW,SAAA6D,EAHV,IAAA,OAAU,CAAE,OAAAz3C,EAAAi3C,CAAM,C,EAAlB,IAAA,MAAU,EAAA,CAAEhX,EAAAgX,EAAMuB,EAAA,EAAA,C,IAKnB,IAAA7E,EAAGxzC,EAAAyzC,EAAA,CAAA,EAAHvR,EAAAsR,EAAG,OACKiD,GAAM,CAAK7X,EAAKgQ,KAAQhQ,GAAG,EAAA,IAAA,C,wBAAhB,IAAAA,MAAI/+B,EAAAyvC,CAAA,CAAA,CAAA,GAACV,MAAM/uC,EAAAyvC,CAAA,CAAA,CAAA,GAC1B,IAAAoB,EAAMjyC,GAAA,EAAN0kC,EAAAjjC,EAAAwwC,EAAM,EAAA,E,OAANhQ,EAAAgQ,EAAM,eAAA7wC,EAA6Bg3C,CAAI,IAAKjY,EAAG,CAAA,EAA6BqC,EAAAkC,EAAAyL,EAAK,CAAA,C,GAAjFzP,EAAA,QAAAuR,MAAgE2G,EAAKzY,EAAG,CAAA,CAAA,EAAxEJ,EAAA0P,EAAAwC,CAAM,C,GAFV1O,EAAAwR,CAAG,EAAHzU,EAAA,GAAA5+B,EAAAqzC,EAAG,aAAA/E,CAAA,EAAA,KAAwC9C,EAAE,eAAe,CAAA,CAAA,E,QARjD8C,EAAA7uC,MAAA+rC,EAAE,eAAe,CAAA,EAAhCqH,EAAOhF,GAAA,C,yBACI,U,yCAeP,IAAA2F,EAAG/0C,GAAA,EACDmvC,EAACjuC,EADH6zC,CAAG,EACDhD,EAAA7wC,EAAAiuC,CAAC,EACwBnJ,EAAI5kC,EAAA2wC,CAAA,EAAJE,EAAA3wC,EAAA0kC,EAAI,EAAA,EAC3BgM,EAAM5wC,EADiB4kC,EAAI,CAAA,EAC3B2T,EAAAr4C,EAAA0wC,EAAM,EAAA,EAFR5O,EAAA+L,CAAC,EAID,IAAAyK,EAAKx4C,EAJL+tC,EAAC,CAAA,EAKC4G,EAAK70C,EADP04C,CAAK,EACHjY,EAAAoU,CAAK,EAAL,IAAA8D,EAAAz4C,EAAA20C,CAAK,EADP3S,EAAAwW,CAAK,EAIL,IAAAE,EAAA14C,EAJAw4C,EAAK,CAAA,EAILG,EAAAz4C,EAAAw4C,EAAA,EAAA,EATF1W,EAAA2R,CAAG,E,+BAEgD1S,EAAA4P,EAAAhxC,EAAAk3C,CAAK,CAAA,E,wBAOtD,EAAA,SAAAl3C,EAGWuwC,CAAI,E,aAVbzE,EAAE,iBAAiB,MACsCA,EAAE,eAAe,MAI1EA,EAAE,sBAAsB,MAQxBA,EAAE,wBAAwB,C,GAZ1BxM,EAAA,QAAAyR,EAA2C2G,CAAW,EAGtD5V,EAAAgT,MAAK90C,EAAgDo3C,CAAM,EAAA,GAAA72C,EAAN62C,EAAMoB,CAAA,CAAA,EAG7DlZ,EAAA,QAAAuZ,EAIUR,CAAa,EAbzB1Z,EAAA0P,EAAAyF,CAAG,C,QAmBH,IAAAiF,EAAC/5C,GAAA,EAADg6C,EAAA/4C,EAAA84C,CAAC,EACgCE,EAAI94C,EAAA64C,CAAA,EAAJE,EAAA74C,EAAA44C,EAAI,EAAA,EACnCE,EAAMh5C,EADyB84C,EAAI,CAAA,EACnCG,EAAA/4C,EAAA84C,EAAM,EAAA,EAFRhX,EAAA4W,CAAC,E,2BACwD3X,EAAA8X,EAAAl5C,EAAAk3C,CAAK,CAAA,E,QAA5D,KAAApL,EAAE,yBAAyB,MAC8BA,EAAE,eAAe,CAAA,C,EAA1ExM,EAAA,QAAA6Z,EAA2CzB,CAAW,EAFxD/Y,EAAA0P,EAAA0K,CAAC,C,UApBC/4C,EAAAk3C,CAAK,GAAAl3C,EAAI63C,CAAQ,EAAAhI,EAAAP,CAAA,EAAAtvC,EAmBZk3C,CAAK,GAAArH,EAAAgE,EAAA,CAAA,C,sBAQZ,IAAAQ,EAAGn1C,GAAA,EACDm6C,EAAKp5C,EADPo0C,CAAG,EAECiF,EAAAr5C,EADFo5C,CAAK,EACH3Y,EAAA4Y,CAAA,EAAA,IAAAC,EAAAp5C,EAAAm5C,CAAA,EADFnX,EAAAkX,CAAK,EAAL,IAAAlF,EAAAh0C,EAAAk5C,EAAK,CAAA,E,MAaH,IAAAG,EAAA56C,GAAA,EAAA66C,EAAAp5C,EAAAm5C,EAAA,EAAA,E,MAAAlX,GAAAkX,EAAA,EAAA,cAAAx5C,EAEoB63C,CAAQ,EAAG,wBAA0B,eAAa,EAFtE,EAAA,SAAA73C,EAGWuwC,CAAI,E,aAGbzE,EAAC9rC,EAAC63C,CAAQ,EAAG,sBAAwB,wBAAuB,CAAI,MAAK73C,EAAEm3C,CAAM,CAAA,CAAC,IAAI,CAAA,C,GANpF7X,EAAA,QAAAka,EAIUpB,EAAW,EAJrBzZ,EAAA0P,EAAAmL,CAAA,C,UADEx5C,EAAAm3C,CAAM,CAAA,CAAC,MAAItH,EAAAqE,CAAA,C,sBAWb,IAAAlF,EAAI/vC,GAAA,EAAJy6C,EAAAr5C,EAAA2uC,EAAI,EAAA,EAAe9P,EAAA,GAAA1+B,EAAAk5C,EAAA9K,CAAA,EAAA,KAAA9C,EAAE,iBAAgB,CAAI,MAAO,GAAK,CAAA,CAAA,CAAA,EAArDnN,EAAA0P,EAAAW,CAAI,C,UADFhvC,EAAA82C,CAAO,CAAA,CAAC,SAAW,KAAKjH,EAAAuE,CAAA,C,GAvB9BjS,EAAAkS,CAAG,E,MAEC3S,EAAA4X,EAAAt5C,EAGUmsC,CAAG,CAAA,EAHb,EAAA,cAAAnsC,EAIgBm3C,CAAM,CAAA,CAAC,KAAO,GAAC,CAAAn3C,EAAKmsC,CAAG,E,uBAGvCnsC,EAAAm3C,CAAM,CAAA,CAAC,KACJrL,EAAE,iBAAgB,CAAI,MAAK9rC,EAAEm3C,CAAM,CAAA,CAAC,IAAI,CAAA,EACxCrL,EAAE,qBAAoB,CAAI,MAAK9rC,EAAE82C,CAAO,CAAA,CAAC,MAAM,CAAA,C,GATlDxX,EAAA,SAAAga,EAKW1B,CAAS,EAPxBjZ,EAAA0P,EAAAgG,CAAG,C,UADDr0C,EAAA82C,CAAO,CAAA,CAAC,QAAMjH,EAAA6D,CAAA,C,sBA+BhB5E,GAAOT,EAAA,CAAA,CAAA,C,QAEP6G,GAAK7G,EAAA,C,cAAU,OAAAwI,C,cAAgB,OAAA72C,EAAA82C,CAAO,CAAA,CAAC,M,cAAe,OAAA92C,EAAAs4C,EAAO,C,EAClD,KAAI,GAAA,C,iBACLjW,EAAAyX,EAAA,OAAA95C,EAAA82C,CAAO,EAAI,GAAQ9G,EAAO,IAAE,EAAjB,IAAM,C,CACM,IAAApB,EAAA7uC,MAAA,mBAAAC,EAAAgwC,CAAM,CAAA,CAAC,IAAE,EAApC0E,GAAGrG,EAAA,C,kDACD2L,EAAE95C,EAAA65C,CAAA,EACAE,EAAAh6C,EADF+5C,CAAE,EACAtZ,EAAAuZ,CAAA,EADF9X,EAAA6X,CAAE,EASF,IAAAE,EAAE/5C,EATF65C,EAAE,CAAA,EASFG,EAAAl6C,EAAAi6C,CAAE,E,CAC4B,IAAAtL,EAAA7uC,MAAA,mBAAAC,EAAAgwC,CAAM,CAAA,CAAC,IAAE,EAArCxB,GAAI2L,EAAA,C,yFACFjb,MAAA1+B,EAAA45C,EAAAp6C,EAAAgwC,CAAM,CAAA,CAAC,KAAK,CAAA,E,+BAEd,IAAAuE,EAAGp0C,EAAAg6C,EAAA,CAAA,EACDxK,EAAI1vC,EADNs0C,CAAG,EACD8F,EAAAh6C,EAAAsvC,EAAI,EAAA,EAAJ2K,EAAAn6C,EAAAwvC,EAAI,CAAA,E,MAEF,IAAA6K,EAAIr7C,GAAA,EAAJs7C,EAAAp6C,EAAAm6C,EAAI,EAAA,EAAqCtb,EAAA,GAAA1+B,EAAAi6C,EAAA7L,CAAA,EAAA,KAAA9C,EAAE,iBAAiB,CAAA,CAAA,EAA5DnN,EAAA0P,EAAAmM,CAAI,C,QAEJ,IAAAG,EAAIv7C,GAAA,EAAJw7C,EAAAv6C,EAAAs6C,EAAI,EAAA,EAAuCzb,EAAA,GAAA1+B,EAAAo6C,EAAAhM,CAAA,EAAA,KAAA9C,EAAE,sBAAsB,CAAA,CAAA,EAAnEnN,EAAA0P,EAAAsM,CAAI,C,UAHF36C,EAAAgwC,CAAM,CAAA,CAAC,UAASH,EAAA0K,CAAA,EAAAv6C,EAEVgwC,CAAM,CAAA,CAAC,OAAKH,EAAA6K,EAAA,CAAA,C,sBAIpB,IAAAK,EAAI17C,GAAA,EAAJ27C,EAAA36C,EAAA06C,EAAI,EAAA,EAAuC7b,EAAA,GAAA1+B,EAAAw6C,EAAApM,CAAA,EAAA,KAAA9C,EAAE,mBAAmB,CAAA,CAAA,EAAhEnN,EAAA0P,EAAA0M,CAAI,C,UADF/6C,EAAAgwC,CAAM,CAAA,CAAC,SAAS,QAAMH,EAAAiL,CAAA,C,GAP5B3Y,EAAAoS,CAAG,EAAH,IAAA0G,EAAA96C,EAAAo0C,EAAG,CAAA,E,MAYD,IAAA4G,EAAG77C,GAAA,EAAH87C,EAAA/6C,EAAA86C,EAAG,EAAA,E,OAAHta,EAAAsa,EAAG,QAAAn7C,EAAsDgwC,CAAM,CAAA,CAAC,SAAS,EACvE5O,EAAAga,EAAAp7C,EAAAgwC,CAAM,CAAA,CAAC,SAAS,C,GADlBrR,EAAA0P,EAAA8M,CAAG,C,UADDn7C,EAAAk3C,CAAK,GAAAl3C,EAAIgwC,CAAM,CAAA,CAAC,WAASH,EAAAqL,CAAA,C,GAf/B/Y,EAAA+X,CAAE,EAsBF,IAAAmB,EAAEl7C,EAtBF+5C,EAAE,CAAA,EAsBFoB,EAAAr7C,EAAAo7C,CAAE,E,MAEE,IAAAG,EAAGh8C,GAAA,EAAH6iC,EAAAmZ,EAAG,OAAAx7C,EACKgwC,CAAM,CAAA,CAAC,OAAU,GAAWD,EAAM,MAAI,EAArB,EAAK,IAAA,C,iCACV,IAAAnB,EAAA7uC,MAAA,WAAAC,EAAA+vC,CAAK,CAAA,CAAC,MAAI,EADmCvB,GAAAmN,EAAA,C,6EAEnCzc,MAAA1+B,EAAAo7C,EAAA57C,EAAA+vC,CAAK,CAAA,CAAC,UAAU,CAAA,E,+BAFG7Q,MAAA1+B,EAAAk7C,EAAA17C,EAAA8sC,CAAE,EAAG,KAAO,EAAE,CAAA,E,SAD/D3K,EAAAqZ,CAAG,EAAH7c,EAAA0P,EAAAmN,CAAG,C,QAOH,IAAAK,EAAIp8C,GAAA,EAAJq8C,EAAAz7C,EAAAw7C,EAAI,EAAA,EAAqB3c,EAAA,GAAA1+B,EAAAs7C,EAAAlN,CAAA,EAAA,KAAA9C,EAAE,oBAAoB,CAAA,CAAA,EAA/CnN,EAAA0P,EAAAwN,CAAI,C,UARF77C,EAAAgwC,CAAM,CAAA,CAAC,OAAO,OAAMH,EAAA0L,CAAA,EAAA1L,EAAAwF,EAAA,EAAA,C,GAD1BlT,EAAAkZ,CAAE,EAaF,IAAAU,EAAE57C,EAbFk7C,EAAE,CAAA,EAaFW,EAAA37C,EAAA07C,EAAE,EAAA,EAIFE,EAAE97C,EAJF47C,EAAE,CAAA,EAIFG,GAAA77C,EAAA47C,EAAE,EAAA,E,cA/CApb,EAAAoZ,EAAA,aAAArL,CAAA,EAAAlN,EAAAuY,EAAAhJ,CAAA,EAa4C7P,EAAAiZ,EAAAr6C,EAAAgwC,CAAM,CAAA,CAAC,QAAQ,EA+B3D5O,EAAA4a,EAAAh8C,EAAAgwC,CAAM,CAAA,CAAC,WAAa,GAAG,EAGzBnP,EAAAob,EAAE,QAAA/K,CAAA,E,cA5CapF,EAAE,iBAAgB,CAAI,MAAK9rC,EAAEgwC,CAAM,CAAA,CAAC,KAAK,CAAA,MAC5ChwC,EAAAm3C,CAAM,CAAA,CAAC,IAAGn3C,EAACgwC,CAAM,CAAA,CAAC,EAAE,MA2CuBqC,GAAMryC,EAACgwC,CAAM,CAAA,CAAC,UAAU,MAC7EsC,GAAKtyC,EAACgwC,CAAM,CAAA,CAAC,UAAU,C,GAhDvB1Q,EAAA,SAAA2a,MAKiBtC,EAAM33C,EAACgwC,CAAM,CAAA,CAAC,EAAE,CAAA,E,uEAbzChwC,EAAA+2C,CAAO,GAAA/2C,EAAI82C,CAAO,CAAA,CAAC,SAAW,EAACjH,EAAA8J,CAAA,EAAA9J,EAAA+J,EAAA,EAAA,C,6CAxEvCzX,EAAA8L,EAAG,EAAHzM,GAAAyM,GAAG,GAAA1tC,EAAyBizC,EAAOgF,CAAA,MAAAx4C,EAAPwzC,CAAO,CAAA,EAAnC7U,EAAA0P,EAAAJ,EAAG,E,GAFI,C,ivBC/JR,SAAA6O,GAAA,EAAA,EAAA,C,QAEE,IAAIla,EAAOphC,EAAA4sC,EAAA,QAAA,OAAA,CAAA,CAAA,EAAO2O,EAASv7C,EAAA4sC,EAAA,YAAA,OAAA,CAAA,CAAA,EAAiB4O,EAAQx7C,EAAA4sC,EAAA,WAAA,EAAG,EAAK,EAItDyE,EAAE,UAAa,KAAK,OAAM,CAAA,CAAG,SAAS,EAAE,CAAA,CAAE,MAAM,EAAG,EAAE,IAEvDlJ,EAAQloC,EAAO,EAAE,EACjBw7C,EAAOx7C,EAAO,EAAK,EACnBy7C,EAASz7C,EAAO,CAAC,EACjB07C,EAAW17C,EAAO,EAAK,EAErBwkC,EAAIvkC,MAAA,CAAA,GAAgB,IAAI,IAAIkhC,EAAK,CAAA,CAAA,CAAA,CAAG,KAAI,CAAA,EACxCwa,EAAM17C,MAAAC,EAAYgoC,CAAK,CAAA,CAAC,KAAI,CAAA,CAAG,YAAW,CAAA,EAC1C0T,EAAO37C,MAAA,CAAA,GACP,IAAI,IAAIq7C,EAAS,CAAA,CAAA,CAAA,CAClB,OAAQ,GAAK,CAAMna,EAAK,CAAA,CAAC,SAASgF,CAAK,IAAA,CAAAjmC,EAAOy7C,CAAM,GAAIxV,EAAM,YAAW,CAAA,CAAG,SAAQjmC,EAACy7C,CAAM,CAAA,EAAA,CAAA,CAC3F,MAAM,EAAG,IAAME,EAAK3O,CAAC,EAAI2O,EAAKC,CAAC,GAAK5O,EAAE,cAAc4O,CAAC,CAAA,CAAA,EAEpDC,EAAM97C,MAAAC,EAAY07C,CAAO,CAAA,CAAC,MAAM,EAAG,EAAK,CAAA,EACxCI,EAAK/7C,MAAAC,EAAYgoC,CAAK,CAAA,CAAC,KAAI,CAAA,EAC3B+T,EAAKh8C,MAAAC,EAAY87C,CAAK,IAAK,IAAE,CAAK7a,EAAK,CAAA,CAAC,SAAQjhC,EAAC87C,CAAK,CAAA,GAAA,CAAMV,EAAS,CAAA,CAAC,SAAQp7C,EAAC87C,CAAK,CAAA,CAAA,EACpFE,EAAOj8C,MAAAC,EAAY+7C,CAAK,EAAA,CAAA,GAAA/7C,EAAO67C,CAAM,EAAA77C,EAAE87C,CAAK,CAAA,EAAA97C,EAAI67C,CAAM,CAAA,EACtDI,EAAKl8C,MAAAC,EAAYw7C,CAAQ,GAAAx7C,EAAIskC,CAAI,CAAA,CAAC,QAAU,GAAMtkC,EAAGskC,CAAI,EAAAtkC,EAAGskC,CAAI,CAAA,CAAC,MAAM,EAAG,EAAM,CAAA,EAEtFlG,MAAc,CACVp+B,EAAEu7C,CAAM,GAAAv7C,EAAIg8C,CAAO,CAAA,CAAC,QAAM1d,EAAEid,EAAS,KAAK,IAAGv7C,EAACg8C,CAAO,CAAA,CAAC,OAAS,EAAG,CAAC,EAAA,EAAA,CACvE,CAAC,EAED,SAASL,EAAK,EAAO,CACnB,OAAM37C,EAACy7C,CAAM,GAAIxV,EAAM,YAAW,CAAA,CAAG,WAAUjmC,EAACy7C,CAAM,CAAA,EAAI,EAAI,CAChE,CAEA,SAASS,EAAI,EAAO,CACbjW,GAAS,GAAK,CAAA,CAAC,SAASA,CAAK,IAErBwG,EAAA,SAAA,CAAA,GAAAxL,EAAK,EAAEgF,CAAK,CAAA,EACzB3H,EAAA0J,EAAQ,EAAE,EACV1J,EAAAid,EAAS,CAAC,EACZ,CAEA,SAASY,EAAO,EAAO,CACZ1P,EAAA,SAAAxL,EAAK,CAAA,CAAC,OAAQ,GAAQiK,IAAQjF,CAAK,CAAA,CAC9C,CAEA,SAASmW,EAAQ,EAAO,CAClBne,EAAM,MAAQ,aAChBA,EAAM,eAAc,EACpBK,EAAAgd,EAAO,EAAI,EACXhd,EAAAid,EAAS,KAAK,IAAGv7C,EAACu7C,CAAM,EAAG,EAACv7C,EAAEg8C,CAAO,CAAA,CAAC,OAAS,CAAC,EAAA,EAAA,GACvC/d,EAAM,MAAQ,WACvBA,EAAM,eAAc,EACpBK,EAAAid,EAAS,KAAK,IAAGv7C,EAACu7C,CAAM,EAAG,EAAG,CAAC,EAAA,EAAA,GACtBtd,EAAM,MAAQ,SACvBA,EAAM,eAAc,EACpBie,EAAGl8C,EAACs7C,CAAI,GAAAt7C,EAAIg8C,CAAO,CAAA,CAAC,OAAMh8C,EAAGg8C,CAAO,CAAA,CAAAh8C,EAACu7C,CAAM,GAAAv7C,EAAI87C,CAAK,CAAA,GAC3C7d,EAAM,MAAQ,UACvBK,EAAAgd,EAAO,EAAK,CAEhB,CAGD,IAAAhP,EAAG1sC,GAAA,EAAH4sC,EAAAvsC,EAAAqsC,CAAG,E,OAEC,IAAA0F,EAAG1yC,GAAA,EACD6zC,EAAAlzC,EADF+xC,CAAG,EACDjT,EAAAoU,CAAA,EAAA,IAAAlB,EAAA/xC,EAAAizC,EAAA,CAAA,E,MAuBE,IAAAkJ,EAAEh9C,GAAA,EAAFgzC,EAAApyC,EAAAo8C,CAAE,EACM3b,EAAA2R,EAAA,OAAAryC,EAAAg8C,CAAO,EAAI,GAAc/V,GAAK,EAAnB,EAAK,IAAA,CACpB,IAAAqW,EAAAn9C,GAAA,E,MAAA,IAAAmzC,EAAAryC,EAAAq8C,CAAA,E,MAaI,IAAAjP,EAAIpuC,GAAA,EAAJ0iC,EAAAxhC,EAAAktC,EAAI,EAAA,EAA2B9P,EAAA,GAAAn9B,EAAAuhC,EAAAsL,CAAA,EAAA,KAAA9C,EAAE,uBAAuB,CAAA,CAAA,EAAxDnN,EAAA0P,EAAAW,CAAI,C,UADFrtC,EAAA+7C,CAAK,GAAA/7C,EAAIm+B,CAAK,IAAAn+B,EAAKg8C,CAAO,CAAA,CAAC,OAAS,GAAC9N,EAAAP,CAAA,C,GAGzC,IAAAK,EAAI9tC,EAAAoyC,EAAA,CAAA,E,MAAJ,IAAAnD,EAAAhvC,EAAA6tC,EAAI,EAAA,EAfNxN,EAAA8b,CAAA,E,MAAApd,EAAAod,EAAA,KAAA,GACQpL,EAAE,GAAAlxC,EAAIm+B,CAAK,GAAA,EADnBe,EAAAod,EAAA,gBAAAt8C,EAGgBm+B,CAAK,IAAAn+B,EAAKu7C,CAAM,CAAA,EAHhC,EAAAl7C,GAAAi8C,EAAA,EAAA,sBAAA,KAAAxK,EAAA,CAAA,sBAAA9xC,EAK4Bm+B,CAAK,IAAAn+B,EAAKu7C,CAAM,CAAA,CAAA,EAU1C,EAAAl7C,GAAA2tC,EAAI,EAAA,kBAAA,KAAAuO,EAAA,CAAA,mBAAAtP,CAAA,CAAA,EAA8ExN,EAAA0P,EAAAlJ,CAAK,C,EAAlC,KAAAA,EAAM,WAAW,QAAQ,CAAA,C,EAfhFtI,EAAA,YAAA2e,EAMe,GAAU,CACtBre,EAAM,eAAc,EACpBie,EAAIjW,CAAK,CACX,CAAC,EATFtI,EAAA,YAAA2e,MAAAh8C,EAUqBi7C,EAAMv7C,EAAGm+B,CAAK,EAAA,EAAA,CAAA,EAVnCnB,EAAA0P,EAAA4P,CAAA,C,sBAoBA,IAAAE,EAAEp9C,GAAA,EAAFiwC,EAAAlvC,EAAAq8C,EAAE,EAAA,E,iBACArS,EAAE,qBAAoB,CAAI,MAAKnqC,EAAE07C,CAAO,CAAA,CAAC,OAAS,EAAK,CAAA,C,GADzD1e,EAAA0P,EAAA8P,CAAE,C,UADAx8C,EAAA07C,CAAO,CAAA,CAAC,OAAS,IAAKxN,EAAAgE,CAAA,C,GArB5B1R,EAAA6b,CAAE,E,MAAFnd,EAAAmd,EAAE,KAAA,GAAkCnL,EAAE,MAAA,EAAtChS,EAAAmd,EAAE,aAAApP,CAAA,C,EAAwE,KAAA9C,EAAE,uBAAuB,CAAA,C,EAAnGnN,EAAA0P,EAAA2P,CAAE,C,UADAr8C,EAAAs7C,CAAI,GAAAt7C,EAAIg8C,CAAO,CAAA,CAAC,QAAM9N,EAAAqE,CAAA,C,GAvB5B/R,EAAAwR,CAAG,E,UACD9S,EAAAiU,EAAA,gBAAAnzC,EAGgBs7C,CAAI,GAAAt7C,EAAIg8C,CAAO,CAAA,CAAC,OAAS,CAAC,EAH1C9c,EAAAiU,EAAA,gBAAA,GAImBjC,EAAE,MAAA,EAJrBhS,EAAAiU,EAAA,wBAAAnzC,EAMwBs7C,CAAI,GAAAt7C,EAAIg8C,CAAO,CAAA,CAAC,OAAM,GAAM9K,EAAE,GAAAlxC,EAAIu7C,CAAM,IAAK,IAAA,EAAS,EAN9Erc,EAAAiU,EAAA,aAAAlG,CAAA,EAAA/N,EAAAiU,EAAA,cAAA7D,CAAA,C,OAOanF,EAAE,qBAAqB,MACtBA,EAAE,4BAA2B,CAAI,MAAOiR,EAAS,CAAA,CAAC,MAAM,CAAA,C,GARtEzd,EAAA,QAAAwV,MAagB,CACb7U,EAAAgd,EAAO,EAAI,EACXhd,EAAAid,EAAS,CAAC,CACZ,CAAC,EAhBFtd,EAAA,QAAAkV,MAAA7yC,EAiBiBg7C,EAAO,EAAI,CAAA,EAjB5Brd,EAAA,OAAAkV,MAAA7yC,EAkBgBg7C,EAAO,EAAK,CAAA,EAlB5B3d,EAAA,UAAAwV,EAmBYiJ,CAAO,EAnBnB1c,EAAAyT,MAAAnzC,EAYagoC,CAAK,EAAA,GAAA1nC,EAAL0nC,EAAK6O,CAAA,CAAA,EAbpB7Z,EAAA0P,EAAAsF,CAAG,C,UADAqJ,EAAQ,GAAAnN,EAAAuE,EAAA,C,sBAyDX,IAAAgK,EAAE/8C,GAAA,EAAFmzC,EAAA5yC,EAAAw8C,CAAE,EACM/b,EAAAmS,EAAA,OAAA7yC,EAAAi8C,CAAK,EAAI,GAAOhW,GAAK,EAAZ,IAAK,CAClB,IAAAyW,EAAEl9C,GAAA,EAAFu3C,EAAA92C,EAAAy8C,CAAE,E,aAGE,IAAAxN,EAAA3vC,GAAA,EAAAg+B,EAAA,GAAAh9B,EAAA2uC,EAAA,aAAAjC,CAAA,EAAA,KAGa9C,EAAE,uBAAsB,CAAI,OAAK,CAAA,CAAA,CAAA,EAH9CxM,EAAA,QAAAuR,MAIgBiN,EAAOlW,CAAK,CAAA,EAJ5BjJ,EAAA0P,EAAAwC,CAAA,C,UADGmM,EAAQ,GAAAnN,EAAA6D,CAAA,C,GAFfvR,EAAAkc,CAAE,E,MAAF/b,GAAA+b,EAAE,EAAA,2BAAAzP,GAAA,IAAA,EACAxN,EAAAsX,EAAA,GAAA9Q,GAAK,GAAA,EAAA,C,OAD4BA,EAAM,WAAW,QAAQ,EAAI,yBAA2B,0B,GAA3FjJ,EAAA0P,EAAAgQ,CAAE,C,sBAcF,IAAAC,EAAEl9C,GAAA,EACA2vC,EAAMnvC,EADR08C,CAAE,EACA1F,EAAA92C,EAAAivC,EAAM,EAAA,EADR5O,EAAAmc,CAAE,E,iBAEE38C,EAAAw7C,CAAQ,EAAGrR,EAAE,qBAAqB,EAAIA,EAAE,oBAAmB,CAAI,MAAKnqC,EAAEskC,CAAI,CAAA,CAAC,MAAM,CAAA,C,GADnF3G,EAAA,QAAAyR,MAAM9uC,EAA4Dk7C,EAAQ,CAAAx7C,EAAIw7C,CAAQ,CAAA,CAAA,EADxFxe,EAAA0P,EAAAiQ,CAAE,C,UADA38C,EAAAskC,CAAI,CAAA,CAAC,OAAS,IAAM4J,EAAA8J,CAAA,C,GAf1BxX,EAAAic,CAAE,EAAFlf,EAAA,GAAAh9B,EAAAk8C,EAAE,aAAAxP,CAAA,EAAA,KAAuC9C,EAAE,qBAAoB,CAAI,MAAKnqC,EAAEskC,CAAI,CAAA,CAAC,MAAM,CAAA,CAAA,CAAA,EAArFtH,EAAA0P,EAAA+P,CAAE,C,SAwBF,IAAAlQ,EAAC5sC,GAAA,EAADw3C,EAAAh3C,EAAAosC,EAAC,EAAA,EAAehP,EAAA,GAAAn9B,EAAA+2C,EAAAlK,CAAA,EAAA,KAAA9C,EAAE,oBAAoB,CAAA,CAAA,EAAtCnN,EAAA0P,EAAAH,CAAC,C,UAzBCvsC,EAAAskC,CAAI,CAAA,CAAC,OAAM4J,EAAA0K,CAAA,EAAA1K,EAAAwF,GAAA,EAAA,C,GAzDjBlT,EAAA8L,CAAG,EAAHtP,EAAA0P,EAAAJ,CAAG,E,GAFI,C,oWC7DR,SAAA0Q,EAAA,EAAA,EAAA,C,QAEE,IAAI/b,EAEGpgC,EAAA4rC,EAAA,QAAA,GAAa,EAAE,EACpBwQ,EAAIp8C,EAAA4rC,EAAA,OAAA,EAAG,MAAM,EACbyQ,EAAMr8C,EAAA4rC,EAAA,SAAA,EAAG,IAAI,EACb1F,EAAIlmC,EAAA4rC,EAAA,OAAA,OAAGtC,EAAE,SAAS,CAAA,EACfrF,EAAAhkC,EAAA2rC,EAAAmQ,EAAA,EAIN,IAAA5F,EAAKp2C,GAAA,EACHysC,EAAItsC,EADNi2C,CAAK,EACHrV,EAAA3gC,EAAAqsC,EAAI,EAAA,EAAJb,EAAAvrC,EAAAosC,EAAI,CAAA,E,MAGF,IAAAf,EAAG7rC,GAAA,EACD0yC,EAAKpyC,EADPurC,CAAG,E,GACD6G,O,yCAA+C,KAAA8J,EAAI,EAAiB,GAAAnY,C,mCACpE,IAAAoK,EAAMjuC,EADNkyC,EAAK,CAAA,EACLhE,EAAAnuC,EAAAkuC,EAAM,EAAA,EAFR1O,EAAA8L,CAAG,EAEmE/O,MAAAr8B,EAAAiuC,EAAApI,EAAI,CAAA,CAAA,EADxErH,EAAAyT,EAAKlS,CAAA,EACLtD,EAAA,QAAAuR,EAAM,SAAA,GAAAkE,EAAA,CAAqD8J,EAAM,CAAA,EAAA,MAAA,KAAA9J,CAAA,C,GAFnEpW,EAAA0P,EAAAJ,CAAG,C,QAKH,IAAAqL,EAAKh3C,GAAA,EAAL4/B,GAAAoX,OAAK,CAAA,MAAA,wBAAA,KAAgCsF,EAAI,EAAA,GAAiBnY,CAAI,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,EAA9DpF,EAAAiY,EAAK1W,CAAA,EAALjE,EAAA0P,EAAAiL,CAAK,C,UANHuF,EAAM,EAAAhP,EAAAP,CAAA,EAAAO,EAAAwF,EAAA,EAAA,C,GAHZlT,EAAAwW,CAAK,E,oBAALha,EAAA0P,EAAAsK,CAAK,E,GAFE,C,oMCVR,SAAAsG,GAAA,EAAA,EAAA,C,gCAKG,IAAAhR,EAAGlrC,GAAA,EAAHugC,EAAAlgC,EAAA6qC,EAAG,EAAA,EAAwE/O,MAAA77B,EAAAigC,EAAA8K,EAAA,SAAA,MAAM,CAAA,EAAjFzP,EAAA0P,EAAAJ,CAAG,C,UADQG,EAAA,SAAA,QAAMyB,EAAAP,CAAA,C,sBAKjB,IAAAqE,EAAG1wC,GAAA,EAAH6tC,EAAA1tC,EAAAuwC,EAAG,EAAA,EAAqEzU,MAAA77B,EAAAytC,EAAA1C,EAAA,SAAA,OAAO,CAAA,EAA/EzP,EAAA0P,EAAAsF,CAAG,C,UADQvF,EAAA,SAAA,SAAOyB,EAAAgE,CAAA,C,aANb,C,igBCFR,SAAA0L,GAAA,EAAA,EAAA,C,QAGE,IAAIlM,EAAaxvC,EAAAuqC,EAAA,OAAA,EAAG,IAAI,EAAEyE,EAAEhvC,EAAAuqC,EAAA,KAAA,EAAG,IAAI,EAAEoR,EAAI37C,EAAAuqC,EAAA,OAAA,EAAG,IAAI,EAAEqR,EAAI57C,EAAAuqC,EAAA,OAAA,EAAG,EAAK,EAE1DsR,EAEJ3f,MAAc,CACZ,SAAS,MAAKqO,EAAA,KAChB,CAAC,EAEDrO,MAAc,CACZ2f,GAAS,MAAK,CAAG,cAAe,EAAI,CAAA,CACtC,CAAC,EAGF,IAAAzR,EAAGrqC,GAAA,EAAHuqC,EAAArqC,EAAAmqC,CAAG,E,MAEC,IAAA0F,EAAGpwC,GAAA,EACDirC,GADF1qC,EAAA6vC,CACM,EAAA,C,SAAK,OAAA6L,EAAI,CAAA,CAAC,E,4EAAuDtgB,MAAAl7B,EAAAs/B,EAAA,KAAAkc,EAAI,CAAA,CAAC,OAAK,IAAA,CAAA,E,+BADjFrd,EAAAwR,CAAG,EAAHhV,EAAA0P,EAAAsF,CAAG,C,UADD6L,EAAI,GAAA3P,EAAAP,CAAA,C,GAMR,IAAA5L,EAAMz/B,EAAAkqC,EAAA,CAAA,EACJ2F,EAAGhwC,EADL4/B,CAAM,EACJsQ,EAAAlwC,EAAAgwC,CAAG,E,sEAGD,IAAAO,EAAGpwC,EAAA+vC,EAAA,CAAA,EACDO,EAAGzwC,EADLuwC,CAAG,EAECsL,EAAE77C,EADJywC,CAAG,E,MACD,IAAAzD,EAAA1sC,EAAAu7C,EAAE,EAAA,EAAFne,GAAAme,EAAE,GAAuG,EAAOnH,MAAPkH,CAAO,EAAhH,IAAAvL,EAAAlwC,EAAA07C,EAAE,CAAA,E,wEADJxd,EAAAoS,CAAG,EAAH,IAAAC,EAAAvwC,EAAAswC,EAAG,CAAA,E,MAMD,IAAArG,EAACzqC,GAAA,EAADutC,EAAA5sC,EAAA8pC,EAAC,EAAA,EAAgBhP,MAAAl7B,EAAAgtC,EAAA6B,EAAE,CAAA,CAAA,EAAnBlU,EAAA0P,EAAAH,CAAC,C,UADC2E,EAAE,GAAAhD,EAAAuE,CAAA,C,sBAKJ,IAAA2E,EAACr1C,GAAA,EAADg1C,EAAAt0C,EAAA20C,EAAC,EAAA,EAAe7Z,MAAAl7B,EAAA00C,EAAArF,EAAI,CAAA,CAAA,EAApB1U,EAAA0P,EAAA0K,CAAC,C,UADC1F,EAAI,GAAAxD,EAAA6D,CAAA,C,GAVVvR,EAAAkS,CAAG,EAHLlS,EAAA2R,CAAG,EAAH,IAAAqG,EAAAl2C,EAAA6vC,EAAG,CAAA,E,MAoBD,IAAAqH,EAAGx3C,GAAA,EAAH22C,EAAAx2C,EAAAq3C,CAAG,E,mBAAHhZ,EAAAgZ,CAAG,EAAHxc,EAAA0P,EAAA8M,CAAG,C,4BArBPhZ,EAAAuB,CAAM,EAAN,IAAAmX,EAAA52C,EAAAy/B,EAAM,CAAA,E,oBAPRvB,EAAA8L,CAAG,E,OAaO,EAAA5pC,GAAAs7C,EAAE,EAAA,4CAAA,KAAAlM,EAAA,CAAA,gBAAwEgM,EAAI,CAAA,CAAA,E,eAbxF9gB,EAAA0P,EAAAJ,CAAG,E,GAFI,C,27DCdR,SAAA2S,GAAA,EAAA,EAAA,C,iBA4BQE,EAAQ5Q,GAAW,EAEnB0G,EAAM,CACT,CAAA,WAAY9K,EAAE,wBAAwB,EAAA,CAAA,CAAA,EACtC,CAAA,UAAWA,EAAE,uBAAuB,EAAA,CAAK,UAAW,EAAK,CAAA,E,CACzD,UAAWA,EAAE,uBAAuB,EAAK,CAAA,gBAAiB,EAAI,C,EAC9D,CAAA,OAAQA,EAAE,oBAAoB,EAAA,CAAK,kBAAmB,EAAI,CAAA,E,CAC1D,WAAYA,EAAE,wBAAwB,EAAK,CAAA,MAAO,cAAc,C,GAChE,YAAaA,EAAE,yBAAyB,EAAK,CAAA,UAAW,EAAI,C,GAgCzDiV,EAAQ,CAAI,SAAU,UAAW,QAAS,iBAAkB,YAAY,EAExElK,EAAO,CACX/K,EAAE,sBAAsB,EACtB,CAAA,MAAOA,EAAE,6BAA6B,EAAG,KAAM,EAAI,EACnD,CAAA,MAAOA,EAAE,0BAA0B,EAAG,KAAM,EAAI,C,EAG9CkV,EAAW5P,GAAc,EAE3B6F,EAAS3xC,EAAO,EAAE,EAClB27C,EAAS37C,EAAMC,EAAA,CAAA,CAAA,CAAA,EACfwxC,EAAUzxC,EAAO,EAAI,EACnBuoC,EAASC,GAAS,EAEpBkJ,EAAO1xC,EAAMC,EAACqxC,EAAO,MAAI,CAAG7X,KAASA,IAAQ8O,EAAO,MAAM,IAAI,MAAM,CAAA,CAAA,GAAK,IAAM,UAAU,CAAA,EAEvFwJ,EAAS7xC,MAAYoxC,EAAO,MAAI,CAAG7X,KAASA,IAAGt5B,EAAKuxC,CAAI,CAAA,CAAA,GAAI,IAAC,CAAA,CAAA,EAE/DkK,EAAS57C,EAAO,EAAK,EACrB67C,EAAW77C,EAAO,EAAK,EACvB87C,EAAY97C,EAAO,EAAE,EACrB+7C,EAAU/7C,EAAMC,EAAA,CAAA,CAAA,CAAA,EAChB+7C,EAASh8C,EAAMC,EAAA,CAAA,CAAA,CAAA,EACfg8C,EAAUj8C,EAAO,IAAI,EAErBk8C,EAAe,GAEbC,EAAYj8C,MAAAC,EAAY87C,CAAO,CAAA,EAAE,OAAQ,GAAQ1U,EAAI,UAAY,SAAS,CAAA,CAAE,QAAU,CAAC,EAE7F,eAAe6U,GAAc,CAI3B,GAHAzhB,EAAAkhB,EAAW,EAAI,EACflhB,EAAAshB,EAAU,IAAI,EAEVC,EAAc,OAElB,IAAMjK,EAAO,MAAMyJ,EAAS,YAAO5S,EAAA,IAAW,MAAM,sCAAsC,CAAA,EAErFmJ,IAELtX,EAAAqhB,EAAS/J,EAAK,OAAM,EAAA,EACpB,EAAe,GACjB,CAEA,eAAeoK,IAAa,CAC1B1hB,EAAAsQ,GAAO,EAAI,EAEX,IAAMgH,EAAO,MAAMyJ,EAAS,YAAO5S,EAAA,IAC7B,M;;W,CAIA,OAAM3oC,EAAE27C,CAAS,CAAA,CAAC,MAAM,SAAS,CAAA,CAAE,OAAO,OAAO,EAAG,OAAM37C,EAAE47C,CAAO,C,IAIzEphB,EAAAsQ,GAAO,EAAK,EAEPgH,IAELtX,EAAAshB,EAAUhK,EAAK,aAAa,SAAQ,EAAA,EACpCtX,EAAAkhB,EAAW,EAAK,EAChBlhB,EAAAmhB,EAAY,EAAE,EACdQ,GAAK,EACP,CACA,IAAIC,GAAWv8C,EAAO,EAAE,EACpBw8C,GAAQx8C,EAAO,EAAE,EACjBy8C,EAAWz8C,EAAO,EAAE,EACpB08C,EAAS18C,EAAMC,EAAA,CAAA,GAAKw7C,CAAQ,CAAA,CAAA,EAC5BkB,GAAY38C,EAAMC,EAAA,CAAA,CAAA,CAAA,EAClB28C,EAAU58C,EAAO,CAAC,EAClBirC,GAAOjrC,EAAO,EAAK,EACnB68C,GAAU78C,EAAO,IAAI,EAEzB,eAAegyC,IAAO,CACpBrX,EAAA8W,EAAU,EAAI,EAEd,GAAI,CACF,IAAMQ,EAAO,MAAKnJ,EAAA,IAAK,MAAM;;;;;;;;;;;;;;;;;;;;;;IAAK,CAChC,OAAM3oC,EAAEwxC,CAAM,CAAA,CAAC,KAAI,GAAM,KACzB,UAASxxC,EAAE4xC,CAAS,CAAA,CAAC,WAAa,KAClC,MAAK5xC,EAAE4xC,CAAS,CAAA,CAAC,OAAS,KAC1B,gBAAe5xC,EAAE4xC,CAAS,CAAA,CAAC,iBAAmB,KAC9C,kBAAiB5xC,EAAE4xC,CAAS,CAAA,CAAC,mBAAqB,KAClD,UAAS5xC,EAAE4xC,CAAS,CAAA,CAAC,WAAa,KAClC,QAASyJ,EAAM,OACf,MAAOA,EAAM,I,GAGf7gB,EAAAghB,EAAS1J,EAAK,OAAM,EAAA,EACpBuJ,EAAM,QAAQvJ,EAAK,UAAU,CAC/B,OAASjG,EAAQ,CACf0P,EAAS,MAAM1P,CAAM,CACvB,QAAU,CACRrR,EAAA8W,EAAU,EAAK,CACjB,CACF,CAEA,SAAS6K,IAAQ,CACfd,EAAM,MAAK,EACXxJ,GAAI,CACN,CAEA,SAAS8K,GAAK,EAAW,CACnBC,IAAc,UAAWvB,EAAM,QAAOr7C,EAACw7C,CAAM,CAAA,CAAC,GAAE,EAAG,CAAA,EAAG,IAAI,EACzDH,EAAM,KAAI,EAEfxJ,GAAI,CACN,CAEA,SAASE,GAAK,EAAQ,CACpBvX,EAAA+W,EAAOG,EAAM,EAAA,EACbtJ,EAAO,QAAQsJ,IAAW,WAAa,UAAS,gBAAmBA,GAAM,EACzEyK,GAAK,CACP,CAEAtK,GAAI,EAGJ,eAAe2F,IAAO,CASpB,GARAhd,EAAA4hB,GAAW,EAAE,EACb5hB,EAAA6hB,GAAQ,EAAE,EACV7hB,EAAA8hB,EAAW,EAAE,EACb9hB,EAAA+hB,EAAM,CAAA,GAAOjB,CAAQ,EAAA,EAAA,EACrB9gB,EAAAkiB,GAAU,IAAI,EACdliB,EAAAihB,EAAS,EAAI,EACbF,EAAS,MAAK,EAEZv7C,EAAEw8C,EAAS,CAAA,CAAC,OAAQ,OAEtB,IAAM1K,EAAO,MAAMyJ,EAAS,YAAO5S,EAAA,IAC7B,MAAM,kDAAkD,CAAA,EAG1DmJ,IACFtX,EAAAgiB,GAAY1K,EAAK,gBAAe,EAAA,EAChCtX,EAAAiiB,EAAU3K,EAAK,gBAAe,EAAA,EAElC,CAEA,SAAS+K,IAAQ,CACfriB,EAAAihB,EAAS,EAAK,EACdF,EAAS,MAAK,CAChB,CAEA,eAAeuB,IAAO,CACpBtiB,EAAAsQ,GAAO,EAAI,EAEX,IAAMgH,EAAO,MAAMyJ,EAAS,YAAO5S,EAAA,IAC7B,MAAM;;;;;;IAAM,CACd,SAAQ3oC,EAAEo8C,EAAQ,CAAA,CAAC,KAAI,GAAM,KAC7B,MAAKp8C,EAAEq8C,EAAK,CAAA,CAAC,KAAI,GAAM,KACvB,SAAQr8C,EAAEs8C,CAAQ,GAAI,KACtB,OAAMt8C,EAANu8C,CAAM,C,IAIV/hB,EAAAsQ,GAAO,EAAK,EAEPgH,IAELtX,EAAAkiB,GAAU5K,EAAK,YAAW,EAAA,EAC1BtX,EAAAihB,EAAS,EAAK,EAEdJ,EAAM,MAAK,EACX,MAAMxJ,GAAI,EACZ,CAEA,IAAMkL,GAAY,GAMT,CAJL1W,EAAE,kBAAiB,CAAI,MAAOiE,EAAM,SAAS,MAAM,CAAA,EACnDjE,EAAE,iBAAgB,CAAI,MAAOiE,EAAM,QAAQ,MAAM,CAAA,CAG5C,CAAK,CAAC,KAAK,KAAK,E,CAKf,IAAAwI,EAAO,GAAA,C,WACdtK,EAAGvoC,EAAA+yC,CAAA,EAAHpW,EAAA4L,EAAG,OACK2I,GAAM,CAAK7X,EAAKgQ,KAAQhQ,GAAG,EAAA,IAAA,C,wBAAhB,IAAAA,MAAIt5B,EAAAgqC,CAAA,CAAA,CAAA,GAACV,MAAMtpC,EAAAgqC,CAAA,CAAA,CAAA,GAC1B,IAAAoB,EAAMvsC,GAAA,EAANg/B,EAAA19B,EAAAirC,EAAM,EAAA,E,OAANhQ,EAAAgQ,EAAM,eAAAprC,EAA6BuxC,CAAI,IAAKjY,EAAG,CAAA,EAA6BqC,EAAAkC,EAAAyL,EAAK,CAAA,C,GAAjFzP,EAAA,QAAAuR,MAAgE2G,GAAKzY,EAAG,CAAA,CAAA,EAAxEJ,EAAA0P,EAAAwC,CAAM,C,GAFV1O,EAAA8L,CAAG,EAAH,IAAAE,EAAAtoC,EAAAooC,EAAG,CAAA,E,CAQK,IAAAW,EAAAppC,MAAAsmC,EAAE,eAAe,CAAA,EACXmF,EAAAzrC,MAAAsmC,EAAE,2BAA2B,CAAA,EAH3C+I,GAAA1G,EAAA,C,wDAIW,SAAAyT,GAHV,IAAA,OAAU,CAAE,OAAAn8C,EAAAwxC,CAAM,C,EAAlB,IAAA,MAAU,EAAA,CAAEhX,EAAAgX,EAAMuB,EAAA,EAAA,C,IAKnB,IAAAzH,EAAMlrC,EAAAsoC,EAAA,CAAA,EAAN2C,EAAAlrC,EAAAmrC,EAAM,EAAA,EACN8H,EAAMhzC,EADNkrC,EAAM,CAAA,EACNC,EAAAprC,EAAAizC,EAAM,EAAA,E,YAbNhY,EAAAoN,EAAG,aAAAW,CAAA,E,oBAAwC9C,EAAE,YAAY,MAYMA,EAAE,oBAAoB,MACjBA,EAAE,YAAY,C,GADlFxM,EAAA,QAAAyR,EAAiD2Q,CAAW,EAC5DpiB,EAAA,QAAAuZ,EAA6DoE,EAAI,E,QAfzDrO,EAAAppC,MAAAsmC,EAAE,cAAc,CAAA,EAA5ByT,GAAIlR,EAAA,C,yBACO,U,mCAiBT4Q,GAAOrL,EAAA,C,eAAW,OAAAoN,EAAS,K,wBAGV,IAAApS,EAAAppC,MAAAsmC,EAAE,sBAAsB,CAAA,EAASmF,EAAAzrC,MAAAsmC,EAAE,qBAAqB,CAAA,EAAvEqH,EAAO9E,EAAA,C,6EACLsK,EAAKjzC,EAAAm0C,CAAA,EACH7K,EAAIlpC,EADN6yC,CAAK,EACHD,EAAA9yC,EAAAopC,EAAI,EAAA,EACJyT,EAAQ58C,EADRmpC,EAAI,CAAA,EACJnN,GAAA4gB,CAAQ,EAFVtgB,EAAAwW,CAAK,EAAL,IAAA1E,EAAApuC,EAAA8yC,EAAK,CAAA,E,MAMH,IAAA+J,EAAQh+C,GAAA,EACNi+C,EAAM78C,EADR48C,CAAQ,EACN9J,EAAAhzC,EAAA+8C,EAAM,EAAA,EAANxO,EAAAtuC,EAAA88C,EAAM,CAAA,EACAtgB,EAAA8R,EAAA,OAAA1uC,EAAA67C,CAAM,EAAI,GAAOsB,EAAM,KAAG,EAAhB,IAAK,CACnB,IAAAvJ,EAAK50C,GAAA,EACHqwC,EAAKhvC,EADPuzC,CAAK,EACH3Y,EAAAoU,CAAK,E,MAALgE,EAAAjzC,EAAAivC,CAAK,EADP3S,EAAAkX,CAAK,E,OACuDwJ,KAAA,EAAAp9C,EAAAm9C,CAAK,CAAA,CAAC,OAAhE,EAAK,OAAL,EAAK,QAAAC,IAAA,IACLzhB,EAAA0X,EAAA,IAAArzC,EAAAm9C,CAAK,CAAA,CAAC,MAAI,IAAA,C,UADV9N,OAA0DlW,EAAAgkB,CAAK,CAAA,CAAC,IAAiBn9C,EAAA47C,CAAO,GAAP,GAAAt7C,EAAAs7C,EAAO7I,CAAA,C,EAD1F7Z,EAAA0P,EAAAgL,CAAK,C,GAHTlX,EAAAugB,CAAQ,EACsBxjB,EAAA,GAAAl5B,EAAA4yC,EAAAhK,CAAA,EAAA,KAAA9C,EAAE,uBAAuB,CAAA,CAAA,EADvDnN,EAAA0P,EAAAqU,CAAQ,C,UADNj9C,EAAA67C,CAAM,CAAA,CAAC,QAAMzR,EAAAP,CAAA,C,GAYjB,IAAAqE,EAAG9tC,EAAAouC,EAAA,CAAA,EACDkF,EAAMrzC,EADR6tC,CAAG,EACDqF,EAAApzC,EAAAuzC,EAAM,EAAA,EAGNK,EAAM3zC,EAHNszC,EAAM,CAAA,EAGND,EAAAtzC,EAAA4zC,EAAM,EAAA,EAJRrX,EAAAwR,CAAG,E,qBACD,EAAM,SAAA1C,E,oBAjBoBnF,EAAE,0BAA0B,MAiBQrmC,EAAA8qC,EAAI,GAAA,CAAA9qC,EAAK27C,CAAS,CAAA,CAAC,KAAI,MACnF37C,EAAA8qC,EAAI,EAAGzE,EAAE,oBAAoB,EAAIA,EAAE,qBAAqB,MAE4BA,EAAE,oBAAoB,C,GAnB5GzK,EAAAohB,MAAQh9C,EAAgE27C,CAAS,EAAA,GAAAr7C,EAATq7C,EAAS5I,CAAA,CAAA,EAgBjFlZ,EAAA,QAAA6Z,EAAkGwI,EAAU,EAG5GriB,EAAA,QAAAka,MAAMzzC,EAA4Do7C,EAAW,EAAK,CAAA,E,yCAvBpF17C,EAAA07C,CAAQ,GAAAtR,EAAAgE,CAAA,C,uBA6BK,IAAAjF,EAAAppC,MAAAsmC,EAAE,sBAAqB,CAAI,MAAKrmC,EAAEg8C,CAAY,CAAA,CAAA,CAAA,EAA7DtO,EAAO9E,EAAA,C,0CACL,IAAA2P,EAAEl5C,GAAA,EAAFu9B,EAAA2b,EAAE,OAAAv4C,EACM87C,CAAO,EAAI,GAAK1U,EAAI,OAAK,EAAd,IAAG,CAClB,IAAAoR,EAAEp5C,GAAA,EACA8qC,EAAI7pC,EADNm4C,CAAE,EACA7E,EAAAxzC,EAAA+pC,EAAI,EAAA,EACJ6K,EAAI30C,EADJ8pC,EAAI,CAAA,EACJ4J,EAAA3zC,EAAA40C,EAAI,EAAA,EAAJhG,EAAA3uC,EAAA20C,EAAI,CAAA,E,MACS,IAAAzV,EAAIngC,GAAA,EAAJ60C,EAAA7zC,EAAAm/B,EAAI,EAAA,EAAsC7F,MAAAl5B,EAAAyzC,EAAAh0C,EAAAonC,CAAG,CAAA,CAAC,GAAG,CAAA,EAAjDlO,EAAA0P,EAAAtJ,CAAI,C,UAAbt/B,EAAAonC,CAAG,CAAA,CAAC,KAAGgD,EAAAqE,CAAA,C,GAHb/R,EAAA8b,CAAE,E,MACwB7c,EAAAgY,EAAA3zC,EAAAonC,CAAG,CAAA,CAAC,KAAK,E,QACR,KAAAf,EAAC,2BAAArmC,EAA4BonC,CAAG,CAAA,CAAC,SAAO,CAAA,C,EAFnElO,EAAA0P,EAAA4P,CAAE,C,GAFN9b,EAAA6b,CAAE,EAAFrf,EAAA0P,EAAA2P,CAAE,C,mCAFFv4C,EAAA87C,CAAO,GAAA1R,EAAAuE,CAAA,C,uBAeM,IAAAxF,EAAAppC,MAAAsmC,EAAE,YAAY,CAAA,EAA7BqH,EAAO9E,EAAA,C,qDACLyF,EAAGpuC,EAAAo9C,CAAA,EAAH3I,EAAAr0C,EAAAguC,CAAG,E,CAEO,IAAAlF,EAAAppC,MAAAsmC,EAAE,sBAAsB,CAAA,EADhC6S,EAAAxE,EAAA,C,sGAEC,IAAA,OAAU,CAAE,OAAA10C,EAAAo8C,EAAQ,C,EAApB,IAAA,MAAU,EAAA,CAAE5hB,EAAA4hB,GAAQrJ,EAAA,EAAA,C,kBAMR,IAAA5J,EAAAppC,MAAAsmC,EAAE,mBAAmB,CAAA,EAAlC6S,EAAKrE,EAAA,C,oEAA6C,IAAA,OAAU,CAAE,OAAA70C,EAAAq8C,EAAK,C,EAAjB,IAAA,MAAU,EAAA,CAAE7hB,EAAA6hB,GAAKtJ,EAAA,EAAA,C,IATrErW,EAAA2R,CAAG,EAAH,IAAA+G,EAAAh1C,EAAAiuC,EAAG,CAAA,E,CAaK,IAAAlF,EAAAppC,MAAAsmC,EAAE,sBAAsB,CAAA,EAIlBmF,EAAAzrC,MAAAsmC,EAAE,kCAAkC,CAAA,EALlD6S,EAAA9D,EAAA,C,oGAGC,IAAA,OAAU,CAAE,OAAAp1C,EAAAs8C,CAAQ,C,EAApB,IAAA,MAAU,EAAA,CAAE9hB,EAAA8hB,EAAQvJ,EAAA,EAAA,C,uBAMnB,IAAAtK,EAACnpC,GAAA,EAAD20C,EAAA9zC,EAAAsoC,EAAC,EAAA,EAAehP,EAAA,GAAAl5B,EAAA0zC,EAAA9K,CAAA,EAAA,KAAA9C,EAAE,sBAAqB,CAAI,MAAKrmC,EAAEy8C,CAAO,CAAA,CAAA,CAAA,CAAA,EAAzDvjB,EAAA0P,EAAAH,CAAC,C,UADCzoC,EAAAs8C,CAAQ,GAAAlS,EAAA6D,CAAA,C,GAIZ,IAAAW,EAAGxuC,EAAAo1C,EAAA,CAAA,EACDN,EAAI70C,EADNuuC,CAAG,EACD+F,EAAAx0C,EAAA+0C,EAAI,EAAA,EACJmC,GADAj3C,EAAA80C,EAAI,CACJ,EAAA,C,YACQ,OAAAl1C,EAAAu8C,CAAM,C,kBACF,OAAAv8C,EAAAw8C,EAAS,C,EACT,SAAA,GAAMl8C,EAAMi8C,EAAS7K,EAAM,EAAA,C,GALzChV,EAAAkS,CAAG,EASH,IAAAE,EAAG1uC,EATHwuC,EAAG,CAAA,EAUD0O,EAAAj9C,EADFyuC,CAAG,EACD8F,EAAAz0C,EAAAm9C,EAAA,EAAA,EAYAC,EAAMn9C,EAZNk9C,EAAA,CAAA,EAYAtI,EAAA70C,EAAAo9C,EAAM,EAAA,EAbR7gB,EAAAoS,CAAG,E,qBACD,EAAA,SAAAtD,E,oBATqBnF,EAAE,oBAAoB,MAYhCrmC,EAAA8qC,EAAI,GAAA,EAAA9qC,EAAMo8C,EAAQ,CAAA,CAAC,KAAI,GAAAp8C,EAAMq8C,EAAK,CAAA,CAAC,KAAI,OAGhDr8C,EAAA8qC,EAAA,EACGzE,EAAE,oBAAoB,EACtBrmC,EAAAs8C,CAAA,EACEjW,EAAE,oBAAoB,EACtBA,EAAE,oBAAoB,MAEsCA,EAAE,oBAAoB,C,GAZzFxM,EAAA,QAAAyjB,EAIUR,EAAI,EAQdjjB,EAAA,QAAA0jB,EAA2DV,EAAK,E,yCAhDlE78C,EAAAy7C,CAAM,GAAArR,EAAA8J,CAAA,C,wBAsDO,IAAA/K,EAAAppC,MAAAC,EAAA08C,EAAO,CAAA,CAAC,MAAM,UAAYrW,EAAE,wBAAwB,EAAIA,EAAE,2BAA2B,CAAA,EAApGqH,EAAO9E,EAAA,C,qDACL0K,EAACrzC,EAAAu9C,CAAA,EAADC,EAAAp9C,EAAAizC,CAAC,E,sDAEGjN,EAAE,6BAA4B,CAAI,WAAUrmC,EAAE08C,EAAO,CAAA,CAAC,MAAM,UAAU,CAAA,MAAK18C,EAAA08C,EAAO,CAAA,CAAC,IAAA,IAC5ErW,EAAE,6BAA6B,IACnC,E,2BAEH5M,EAAA,GAAAl5B,EAAAg1C,EAAApM,CAAA,EAAA,KAAA9C,EAAE,wBAAwB,CAAA,CAAA,E,wBAE1B5M,EAAA,GAAAl5B,EAAAo1C,EAAAxM,CAAA,EAAA,KAAA9C,EAAE,2BAA2B,CAAA,CAAA,E,gBAP3BrmC,EAAA08C,EAAO,CAAA,CAAC,MAAM,UAAStS,EAAA0K,CAAA,EAAA90C,EAIlB08C,EAAO,CAAA,CAAC,UAAStS,EAAA6K,EAAA,CAAA,EAAA7K,EAAAwF,EAAA,EAAA,C,GAL5BlT,EAAA4W,CAAC,EAAD,IAAAoK,EAAAt9C,EAAAkzC,EAAC,CAAA,E,MAaC,IAAAqK,EAACn+C,GAAA,EAADy2C,EAAA91C,EAAAw9C,EAAC,EAAA,EAAqDlkB,MAAAl5B,EAAA01C,EAAAj2C,EAAA08C,EAAO,CAAA,CAAC,GAAG,CAAA,EAAjExjB,EAAA0P,EAAA+U,CAAC,C,UADC39C,EAAA08C,EAAO,CAAA,CAAC,KAAGtS,EAAAiL,CAAA,C,4CAdfr1C,EAAA08C,EAAO,GAAAtS,EAAAqL,EAAA,C,wBAqBTpM,GAAOT,EAAA,CAAA,CAAA,C,4BASI,IAAAmV,EAAI,GAAA,C,iBACLnhB,EAAAqhB,EAAA,OAAAj+C,EAAAw7C,CAAM,EAAI,GAAOlR,EAAM,MAAI,EAAjB,IAAK,C,CACA,IAAAnB,EAAAppC,MAAA,WAAAC,EAAAsqC,CAAK,CAAA,CAAC,MAAI,EAA7B2E,GAAGrG,EAAA,C,kDACD2L,EAAEt0C,EAAAi+C,CAAA,EACAxI,EAAGr1C,EADLk0C,CAAE,EAEE4J,EAAA99C,EADFq1C,CAAG,E,MASD,IAAAK,EAAG31C,EARH+9C,EAAA,CAAA,EASEC,EAAG/9C,EADL01C,CAAG,EACDsI,EAAAh+C,EAAA+9C,CAAG,E,CACmB,IAAAjV,EAAAppC,MAAA,WAAAC,EAAAsqC,CAAK,CAAA,CAAC,MAAI,EAA9BvB,GAAIsV,EAAA,C,kGACF5kB,MAAAl5B,EAAA41C,EAAAn2C,EAAAsqC,CAAK,CAAA,CAAC,UAAU,CAAA,E,6CAEL,IAAAnB,EAAAppC,MAAAyqC,GAAUxqC,EAACsqC,CAAK,CAAA,CAAA,EAA7BZ,GAAK4U,EAAA,C,2BAJP5hB,EAAA0hB,CAAG,EAMH,IAAAG,EAAGn+C,EANHg+C,EAAG,CAAA,EAMH/H,EAAAh2C,EAAAk+C,CAAG,EAC0EjJ,EAAIl1C,EAAAi2C,CAAA,EAAJE,EAAAp2C,EAAAm1C,CAAI,EADjF5Y,EAAA6hB,CAAG,EAPL7hB,EAAAqZ,CAAG,EATLrZ,EAAAgZ,CAAG,EADLhZ,EAAA6X,CAAE,EA0BF,IAAAE,EAAEr0C,EA1BFm0C,EAAE,CAAA,EA0BFkC,EAAAt2C,EAAAs0C,EAAE,EAAA,EAEFmB,EAAEx1C,EAFFq0C,EAAE,CAAA,EAEF+J,EAAAr+C,EAAAy1C,EAAE,EAAA,E,cA1BExa,EAAA+iB,EAAA,MAAA,GAAAn+C,EACSsqC,CAAK,CAAA,CAAC,QAAQ,OAAKtqC,EAAIsqC,CAAK,CAAA,CAAC,QAAQ,UAAS,SAAA,EADvD,EAAA5pC,GAAAy9C,EAAA,EAAA,uCAAA,KAAAnQ,EAAA,CAAA,MAAA,CAAAhuC,EAMesqC,CAAK,CAAA,CAAC,QAAQ,KAAK,CAAA,EAU9B3O,EAAA0a,EAAA,GAAAr2C,EAAAsqC,CAAK,CAAA,CAAC,KAAI,GAAAtqC,EAAMsqC,CAAK,CAAA,CAAC,KAAI,KAAQ,KAAEnB,GAAA,IAAA,E,uCAAEnpC,EAAAsqC,CAAK,CAAA,CAAC,OAASjE,EAAE,iBAAiB,MAC/DrmC,EAAAsqC,CAAK,CAAA,CAAC,UAAYqC,GAAG3sC,EAACsqC,CAAK,CAAA,CAAC,YAAajE,EAAE,cAAc,CAAA,EAAKA,EAAE,cAAc,MAOzB0W,GAAQ/8C,EAACsqC,CAAK,CAAA,MAGlFtqC,EAAAsqC,CAAK,CAAA,CAAC,UAAYqC,GAAG3sC,EAACsqC,CAAK,CAAA,CAAC,YAAajE,EAAE,cAAc,CAAA,EAAKA,EAAE,cAAc,C,6CApChF8C,EAAAppC,MAAAC,EAAAwxC,CAAM,CAAA,CAAC,KAAI,EACdnL,EAAE,sBAAqB,CAAI,OAAMrmC,EAAEwxC,CAAM,CAAA,CAAC,KAAI,CAAA,CAAA,EAC9CnL,EAAC,gBAAArmC,EAAiBuxC,CAAI,GAAA,CAAA,EAL3B9B,GAAAqO,EAAA,C,cACU,OAAA1M,C,cACF,OAAApxC,EAAAw7C,CAAM,CAAA,CAAC,M,2BAKJ,O,oBAuCX3Q,G,KAAK,EAAA,C,YAAE,OAAAwQ,C,cAAc,OAAAr7C,EAAAw7C,CAAM,CAAA,CAAC,M,aAAc,OAAAx7C,EAAAsxC,CAAO,C,EAAU,OAAAqL,E,oBAjDzD38C,EAAAsxC,CAAO,GAAAtxC,EAAIw7C,CAAM,CAAA,CAAC,SAAW,EAACpR,EAAA0L,EAAA,EAAA1L,EAAA+J,GAAA,EAAA,C,GAoDlCjD,G,MAAO,EAAA,C,uCAAQ,OAAAqK,C,iDA7LV,C,67BCpPR,SAAA2D,GAAA,EAAA,EAAA,C,QAKE,IAAIC,EAA0C79C,EAAAqnC,EAAA,YAAA,EAAG,EAAK,EActD,eAAeyW,EAAK,EAAY,EAAY,CACrC,QAAQ/Y,EAAE,2BAA0B,CAAI,OAAQgZ,EAAW,OAAO,KAAM,SAAUC,EAAW,SAAS,IACzG,CAAA,CAAA,GAOE,MALc3W,EAAA,SAAU,YAAOA,EAAA,IACvB,MAAM;;;;IAAI,CAAI,GAAI0W,EAAW,EAAE,CAAA,EACzChZ,EAAE,sBAAqB,CAAI,OAAQgZ,EAAW,OAAO,IAAI,CAAA,CAAA,GAGjD,MAAK1W,EAAA,SAAA,CACjB,CAEA,eAAe3D,EAAO,EAAY,CAChC,IAAMxE,EAAO2e,EAAS,EAAGG,EAAW,MAAM,WAAaA,EAAW,SAAS,KAGxE,QAAQjZ,EAAE,iCAAgC,CAAI,MAAI,CAAA,CAAA,GASjD,MALcsC,EAAA,SAAU,YAAOA,EAAA,IACvB,MAAM;;;;IAAM,CAAI,GAAI2W,EAAW,EAAE,CAAA,EAC3CjZ,EAAE,0BAA0B,CAAA,GAGpB,MAAKsC,EAAA,SAAA,CACjB,C,uBAIC,IAAAF,EAAC7nC,GAAA,EAADi9B,EAAAp8B,EAAAgnC,EAAC,EAAA,EAA6BhP,EAAA,GAAA/3B,EAAAm8B,EAAAsL,CAAA,EAAA,KAAA9C,EAAE,mBAAmB,CAAA,CAAA,EAAnDnN,EAAA0P,EAAAH,CAAC,C,QAED,IAAA8P,EAAEl3C,GAAA,EAAFu7B,EAAA2b,EAAE,OAAA5P,EAAA,KACc,GAAY2W,EAAW,IAAE,EAAzB,IAAU,CACtB,IAAA9G,EAAEp3C,GAAA,EACAonC,EAAG7mC,EADL62C,CAAE,EAEEjP,EAAI5nC,EADN6mC,CAAG,EACD2F,EAAAxsC,EAAA4nC,CAAI,E,OAEoB,IAAAJ,EAAAvnC,MAAA,WAAAC,EAAAy9C,CAAU,CAAA,CAAC,MAAM,MAAI,EAAzCvW,GAAIH,EAAA,C,iGACFnP,MAAA/3B,EAAA2pC,EAAAxpC,EAAAy9C,CAAU,CAAA,CAAC,MAAM,UAAU,CAAA,E,uCAG7B,IAAApV,EAAIppC,GAAA,EAAJyqC,EAAA9pC,EAAAyoC,EAAI,EAAA,EAA8BzQ,MAAA/3B,EAAA6pC,EAAA1pC,EAAAy9C,CAAU,CAAA,CAAC,SAAS,IAAI,CAAA,EAA1DpmB,EAAA0P,EAAAsB,CAAI,C,UALFiV,EAAS,EAAA/U,EAAAgE,CAAA,EAAAhE,EAAAwF,EAAA,EAAA,C,sBASX,IAAAmF,EAAIh0C,GAAA,EAAJkyC,EAAAxxC,EAAAszC,EAAI,EAAA,EAAuCtb,EAAA,GAAA/3B,EAAAuxC,EAAA9J,CAAA,EAAA,KAAA9C,EAAE,6BAA6B,CAAA,CAAA,EAA1EnN,EAAA0P,EAAAmM,CAAI,C,UADFlzC,EAAAy9C,CAAU,CAAA,CAAC,YAAUlV,EAAAqE,CAAA,C,sBAIvB,IAAAyG,EAAIl0C,GAAA,EAAJmyC,EAAA1xC,EAAAyzC,EAAI,EAAA,EAAuCzb,EAAA,GAAA/3B,EAAAyxC,EAAAhK,CAAA,EAAA,KAAA9C,EAAE,gCAAgC,CAAA,CAAA,EAA7EnN,EAAA0P,EAAAsM,CAAI,C,UADFrzC,EAAAy9C,CAAU,CAAA,CAAC,OAAK,CAAAz9C,EAAKy9C,CAAU,CAAA,CAAC,eAAalV,EAAAuE,CAAA,C,sBAI/C,IAAA2G,EAAIr0C,GAAA,EAAJoyC,EAAA5xC,EAAA6zC,EAAI,EAAA,EAAoC7b,EAAA,GAAA/3B,EAAA2xC,EAAAlK,CAAA,EAAA,KAAA9C,EAAE,8BAA8B,CAAA,CAAA,EAAxEnN,EAAA0P,EAAA0M,CAAI,C,UADFzzC,EAAAy9C,CAAU,CAAA,CAAC,WAASlV,EAAA6D,CAAA,C,GAf1BvR,EAAA6M,CAAI,EAoBJ,IAAA6B,EAAMrpC,EApBNwnC,EAAI,CAAA,EAoBJgK,EAAA9xC,EAAA2pC,EAAM,EAAA,EArBR1O,EAAA8L,CAAG,EA0BH,IAAA4N,EAAIr0C,EA1BJymC,EAAG,CAAA,EA0BHiL,EAAAhyC,EAAA20C,EAAI,EAAA,EAIJlI,EAAGnsC,EAJHq0C,EAAI,CAAA,EAKFmJ,EAAI59C,EADNusC,CAAG,EACDyF,EAAAlyC,EAAA89C,EAAI,EAAA,EAAJ1Q,EAAA9sC,EAAAw9C,EAAI,CAAA,E,MAIF,IAAAC,EAAIt+C,GAAA,EAAJ4yC,EAAAryC,EAAA+9C,EAAI,EAAA,E,UAAJpkB,EAAAokB,EAAI,QAAArW,CAAA,E,aAAQyD,GAAM/qC,EAACy9C,CAAU,CAAA,CAAC,UAAU,MACtCjZ,EAAE,wBAAuB,CAAI,KAAMwG,GAAKhrC,EAACy9C,CAAU,CAAA,CAAC,UAAU,CAAA,CAAA,C,GADhEpmB,EAAA0P,EAAA4W,CAAI,C,UADF39C,EAAAy9C,CAAU,CAAA,CAAC,YAAUlV,EAAA8J,CAAA,C,GAJ3BxX,EAAAwR,CAAG,EAAH,IAAAa,EAAAhtC,EAAAmsC,EAAG,CAAA,EAWGtR,EAAAmS,EAAA,OAAAltC,EAAAy9C,CAAU,CAAA,CAAC,aAAW,CAAA,EAAU,GAAYD,EAAW,IAAE,EAAzB,IAAU,CAC9C,IAAAhR,EAAGltC,GAAA,EACDs+C,EAAI99C,EADN0sC,CAAG,EACDgG,EAAA1yC,EAAA89C,CAAI,E,CACmB,IAAAtW,EAAAvnC,MAAA,YAAAC,EAAAw9C,CAAU,CAAA,CAAC,OAAO,UAAQ,EAA/CtW,GAAIsL,EAAA,C,6EAAwE5a,MAAA/3B,EAAAsyC,EAAAnyC,EAAAw9C,CAAU,CAAA,CAAC,OAAO,IAAI,CAAA,E,+BAClG,IAAAK,EAAI39C,EAAAsyC,EAAA,CAAA,EAAJJ,EAAAxyC,EAAAi+C,EAAI,EAAA,EAFNhjB,EAAA+iB,CAAI,EAQJ,IAAAnU,EAAMvpC,EARN09C,EAAI,CAAA,EAQJ9K,EAAAlzC,EAAA6pC,EAAM,EAAA,EATR5O,EAAA2R,CAAG,E,8BAIGxsC,EAAAw9C,CAAU,CAAA,CAAC,WACRhZ,EAAE,2BAA0B,CAAI,KAAMwG,GAAKhrC,EAACw9C,CAAU,CAAA,CAAC,UAAU,CAAA,CAAA,EACjEhZ,EAAE,qBAAqB,MAG6DA,EAAE,kBAAkB,C,GAA/GxM,EAAA,QAAAyR,MAA4D8T,EAAIv9C,EAACy9C,CAAU,EAAAz9C,EAAEw9C,CAAU,CAAA,CAAA,EATzFnmB,EAAA0P,EAAAyF,CAAG,C,GA3CP3R,EAAA8b,CAAE,E,mBA4BE7c,EAAA8X,EAAA5xC,EAAAy9C,CAAU,CAAA,CAAC,OAAKz9C,EAAIy9C,CAAU,CAAA,CAAC,OAAKz9C,EAAIy9C,CAAU,CAAA,CAAC,OAAO,EAI1DlkB,EAAAmkB,EAAI,QAAA/T,CAAA,E,aATFnF,EAAE,wBAAwB,MAShBuG,GAAM/qC,EAACy9C,CAAU,CAAA,CAAC,WAAW,MACvCjZ,EAAE,wBAAuB,CAAI,KAAMwG,GAAKhrC,EAACy9C,CAAU,CAAA,CAAC,WAAW,CAAA,CAAA,C,GAXjEzlB,EAAA,QAAAuR,MAAoEpG,EAAMnjC,EAACy9C,CAAU,CAAA,CAAA,EAtBzFpmB,EAAA0P,EAAA4P,CAAE,C,GAFN9b,EAAA6b,CAAE,EAAFrf,EAAA0P,EAAA2P,CAAE,C,UAHK5P,EAAA,KAAA,SAAW,EAACyB,EAAAP,CAAA,EAAAO,EAAA+J,EAAA,EAAA,C,aAFd,C,2sBC9CR,SAAA+L,GAAA,EAAA,EAAA,C,QAKE,IAAIf,EAA0C18C,EAAAkmC,EAAA,YAAA,EAAG,EAAK,EAQtD,eAAe3D,EAAO,EAAS,CAC7B,IAAMxE,EAAO2e,EAAS,EAAGgB,EAAQ,MAAM,WAAaA,EAAQ,OAAO,KAGhE,QAAQ9Z,EAAE,0BAAyB,CAAI,MAAI,CAAA,CAAA,GAS1C,MALcsC,EAAA,SAAU,YAAOA,EAAA,IACvB,MAAM;;;;IAAM,CAAI,GAAIwX,EAAQ,EAAE,CAAA,EACxC9Z,EAAE,kBAAkB,CAAA,GAGZ,MAAKsC,EAAA,SAAA,CACjB,C,uBAIC,IAAAF,EAACxmC,GAAA,EAAD47B,EAAAj7B,EAAA6lC,EAAC,EAAA,EAA6BhP,EAAA,GAAA52B,EAAAg7B,EAAAsL,CAAA,EAAA,KAAA9C,EAAE,gBAAgB,CAAA,CAAA,EAAhDnN,EAAA0P,EAAAH,CAAC,C,QAED,IAAA8P,EAAE/1C,GAAA,EAAFo6B,EAAA2b,EAAE,OAAA5P,EAAA,KACc,GAASwX,EAAQ,IAAE,EAAnB,IAAO,CACnB,IAAA3H,EAAEj2C,GAAA,EACAimC,EAAG1lC,EADL01C,CAAE,EACArK,EAAArrC,EAAA0lC,CAAG,E,OAEqB,IAAAW,EAAApmC,MAAA,WAAAC,EAAAm9C,CAAO,CAAA,CAAC,MAAM,MAAI,EAAtCpX,GAAIH,EAAA,C,iGACFnP,MAAA52B,EAAAwoC,EAAAroC,EAAAm9C,CAAO,CAAA,CAAC,MAAM,UAAU,CAAA,E,wCAIT,IAAAhX,EAAApmC,MAAA,YAAAC,EAAAm9C,CAAO,CAAA,CAAC,OAAO,UAAQ,EADxCpX,GAAAH,EAAA,C,iGAIEnP,MAAA52B,EAAA0oC,EAAAvoC,EAAAm9C,CAAO,CAAA,CAAC,OAAO,IAAI,CAAA,E,yCATnBhB,EAAS,EAAA/U,EAAAgE,CAAA,EAAAhE,EAAAwF,EAAA,EAAA,C,GAab,IAAAxE,EAAMloC,EAAAirC,EAAA,CAAA,EAAN8E,EAAArwC,EAAAwoC,EAAM,EAAA,EAdR1O,EAAA8L,CAAG,EAmBH,IAAA0F,EAAGhrC,EAnBHslC,EAAG,CAAA,EAmBH5L,EAAAsR,EAAG,OAAAlrC,EACKm9C,CAAO,CAAA,CAAC,OAAU,GAAOhe,GAAK,EAAZ,IAAK,CAC3B,IAAAoH,EAAIpnC,GAAA,E,MAAJ,IAAAgxC,EAAAvwC,EAAA2mC,EAAI,EAAA,E,MAAJ,EAAApmC,GAAAomC,EAAI,EAAA,QAAA,KAAAyE,EAAA,CAAA,mBAAA7E,CAAA,CAAA,EAAoExN,EAAAwX,EAAAhR,CAAK,C,EAAlC,KAAAA,EAAM,WAAW,QAAQ,CAAA,C,EAApEjJ,EAAA0P,EAAAW,CAAI,C,GAFR7M,EAAAwR,CAAG,EAMH,IAAAG,EAAGnrC,EANHgrC,EAAG,CAAA,EAMHK,EAAAzrC,EAAAurC,CAAG,E,MAEC,IAAAnE,EAAI9nC,GAAA,EAAJixC,EAAAzwC,EAAAsnC,EAAI,EAAA,E,UAAJ9O,EAAA8O,EAAI,QAAAf,CAAA,E,aAAmC6D,GAAMhqC,EAACm9C,CAAO,CAAA,CAAC,QAAQ,MAC5DnT,GAAMhqC,EAACm9C,CAAO,CAAA,CAAC,QAAQ,C,GADzBjnB,EAAA0P,EAAAsB,CAAI,C,UADFlnC,EAAAm9C,CAAO,CAAA,CAAC,SAAS,QAAM/V,EAAAqE,CAAA,C,GAK3B,IAAAsG,EAAI7xC,EAAAqrC,EAAA,CAAA,EAAJgF,EAAA3wC,EAAAmyC,EAAI,EAAA,EAAJvG,EAAAtrC,EAAA6xC,EAAI,CAAA,E,MAEF,IAAAG,EAAI/yC,GAAA,EAAJsxC,EAAA7wC,EAAAsyC,EAAI,EAAA,E,UAAJ9Z,EAAA8Z,EAAI,QAAA/L,CAAA,E,aAAQyD,GAAM5pC,EAACm9C,CAAO,CAAA,CAAC,SAAS,MAAI9Z,EAAE,sBAAqB,CAAI,KAAMuG,GAAM5pC,EAACm9C,CAAO,CAAA,CAAC,SAAS,CAAA,CAAA,C,GAAjGjnB,EAAA0P,EAAAsM,CAAI,C,UADFlyC,EAAAm9C,CAAO,CAAA,CAAC,WAAS/V,EAAAuE,CAAA,C,GAPvBjS,EAAA2R,CAAG,EAAH,IAAAK,EAAAxrC,EAAAmrC,EAAG,CAAA,E,MAaD,IAAAsK,EAAEr2C,GAAA,EAAFs6B,EAAA+b,EAAE,OAAA31C,EACMm9C,CAAO,CAAA,CAAC,qBAAoB/8C,GAAA,EAAI,IAAI,CACxC,IAAAs1C,EAAEr2C,GAAA,EACAizC,EAAIxyC,EADN41C,CAAE,EACA/E,EAAA/wC,EAAA0yC,EAAI,EAAA,EACJc,EAAIlzC,EADJoyC,EAAI,CAAA,EACJxB,EAAAlxC,EAAAwzC,EAAI,EAAA,EACJmJ,EAAIr8C,EADJkzC,EAAI,CAAA,EACJpC,EAAApxC,EAAA28C,EAAI,EAAA,EAHN7iB,EAAAgc,CAAE,E,UACoB/c,EAAAgY,EAAA3wC,EAAAw9B,CAAI,CAAA,CAAC,MAAM,IAAI,E,oBACS,KAAK,UAASx9B,EAACw9B,CAAI,CAAA,CAAC,KAAK,MAC5C6F,EAAE,iBAAgB,CAAI,KAAMuG,GAAM5pC,EAACw9B,CAAI,CAAA,CAAC,UAAU,CAAA,CAAA,C,GAH7EtH,EAAA0P,EAAA8P,CAAE,C,GAFNhc,EAAAic,CAAE,EAAFzf,EAAA0P,EAAA+P,CAAE,C,UADA31C,EAAAm9C,CAAO,CAAA,CAAC,sBAAsB,QAAM/V,EAAA6D,CAAA,C,GAtC1CvR,EAAA8b,CAAE,E,mBAgCEpd,EAAA2Z,EAAI,QAAAvJ,CAAA,E,aAhBFnF,EAAE,iBAAiB,MAgBTuG,GAAM5pC,EAACm9C,CAAO,CAAA,CAAC,SAAS,MAAI9Z,EAAE,sBAAqB,CAAI,KAAMwG,GAAK7pC,EAACm9C,CAAO,CAAA,CAAC,SAAS,CAAA,CAAA,C,GAjBhGtmB,EAAA,QAAAuR,MAAoEpG,EAAMhiC,EAACm9C,CAAO,CAAA,CAAA,EAftFjnB,EAAA0P,EAAA4P,CAAE,C,GAFN9b,EAAA6b,CAAE,EAAFrf,EAAA0P,EAAA2P,CAAE,C,UAHK5P,EAAA,KAAA,SAAW,EAACyB,EAAAP,CAAA,EAAAO,EAAA+J,EAAA,EAAA,C,aAFd,C,aC1BR,IAAMiM,GAAQ,IAAI,IAAI,CACpB,aACA,qBACA,gBACA,kBACA,iBACA,iBACA,gBACA,yBACA,qBACA,oBACF,CAAC,EAEKC,GAAU,IAAI,IAAI,CACtB,mBACA,2BACA,uBACA,kBACA,4BACA,6BACA,yBACA,0BACA,wBACA,sBACA,kBACA,oBACA,sBACA,wBACA,oBACA,sBACA,kBACA,qBACA,oBACF,CAAC,EAED,SAAgBtW,GAAK,EAAQ,CAI3B,OAHIqW,GAAM,IAAIE,CAAM,EAAU,MAC1BD,GAAQ,IAAIC,CAAM,EAAU,QAEzB,OACT,CAEA,SAAgBC,GAAS,EAAS,CAChC,OAAO,OAAO,QAAQC,GAAW,CAAC,CAAC,CAAC,CACjC,QACE,EAAGrjB,KACFA,IAAU,MACVA,IAAU,IACV,EAAE,MAAM,QAAQA,CAAK,GAAK,CAACA,EAAM,OACrC,CAAC,CACA,KAAK,CAAC7D,EAAK6D,KAAW,CAAC7D,EAAI,QAAQ,KAAM,GAAG,EAAGmnB,GAAOtjB,CAAK,CAAC,CAAC,CAClE,CAEA,SAASsjB,GAAO,EAAO,CAKrB,OAJI,MAAM,QAAQtjB,CAAK,EAAUA,EAAM,KAAK,GAAG,EAC3C,OAAOA,GAAU,UACZkJ,EAAElJ,EAAQ,mBAAqB,iBAAiB,EAElD,OAAOA,CAAK,CACrB,C,waC7DA,SAAA8jB,GAAA,EAAA,EAAA,C,QAME,IAAI9B,EAAmBr7C,EAAA6kC,EAAA,YAAA,EAAG,EAAI,EAAEuY,EAAKp9C,EAAA6kC,EAAA,QAAA,OAAGtC,EAAE,cAAc,CAAA,EAAG8a,EAAKr9C,EAAA6kC,EAAA,QAAA,EAAG,CAAC,EAAEyY,EAAQt9C,EAAA6kC,EAAA,WAAA,EAAG,EAAK,EAElFjC,EAAM3iC,EAAO,EAAK,EAEhBs9C,GAAQ,EAAK,IACjBja,EAAI,SAAWka,EAAM,QACrBla,EAAI,OAAO,OAASka,EAAM,OAAO,MACjCla,EAAI,QAAQ,WAAaka,EAAM,QAAQ,SAEnCC,EAAIv9C,MAAA2kC,EAAA,OACD,QAAQ,EAAM,IAAU,CAC7B,IAAMqC,EAAOxK,EAAK,GAAE,EAAG,EAKvB,OAHI4gB,EAAQ,GAAIpW,GAAQqW,EAAKrW,EAAK,MAAO7Q,CAAK,EAAG,EAAK,OAAS,EAC1DqG,EAAK,KAAI,CAAG,QAAO,MAAO,CAAC,CAAA,EAEzBA,CACT,E,KAGI2X,EAAKn0C,MAAAC,EAAYyiC,CAAG,EAAAziC,EAAGs9C,CAAI,EAAAt9C,EAAGs9C,CAAI,CAAA,CAAC,MAAM,EAAGJ,EAAK,CAAA,CAAA,EAEjDK,EAAO,uEAEPC,EAAS,GAAK,CAEb,GAAAlB,GAASpmB,EAAM,OAAO,CAAA,CAAE,KAAG,CAAGb,EAAK6D,KAAK,GAAS7D,EAAG,GAAI6D,EAAM,QAAQqkB,EAAM,KAAK,GAAA,EACpFrnB,EAAM,UACNA,EAAM,QAAQ,KACd,CAAA,CAAA,OAAO,OAAO,E,uBAIjB,IAAAsO,EAACnlC,GAAA,EAADu6B,EAAAz5B,EAAAqkC,EAAC,EAAA,EAA6BhP,MAAAp1B,EAAAw5B,EAAAqjB,EAAK,CAAA,CAAA,EAAnChoB,EAAA0P,EAAAH,CAAC,C,mBAEDiZ,EAAEv9C,EAAA6uC,CAAA,EAAFpW,EAAA8kB,EAAE,OAAAz9C,EACMk0C,CAAK,GAAA,CAAM,QAAO,WAAShe,EAAM,IAAE,EAAA,IAAA,CAAxB,IAAAA,MAAMl2B,EAAAgmC,CAAA,CAAA,CAAN,MAAO0X,MAAM19C,EAAAgmC,CAAA,CAAA,CAAN,MACtB,IAAAuO,EAAE70C,GAAA,EACA4lC,EAAIjlC,EADNk0C,CAAE,EAEEtO,EAAA5lC,EADFilC,CAAI,E,MACF,IAAA8B,EAAAjnC,EAAA8lC,EAAA,EAAA,EAAAiE,EAAA5pC,EAAA2lC,EAAA,CAAA,E,MAQE,IAAA6K,EAAIvxC,GAAA,EAAJ+nC,EAAAnnC,EAAA2wC,EAAI,EAAA,EAAsBtb,EAAA,GAAAp1B,EAAAknC,EAAApC,CAAA,EAAA,KAAA9C,EAAE,kBAAiB,CAAI,MAAAsb,EAAK,CAAA,CAAA,CAAA,CAAA,EAAtDzoB,EAAA0P,EAAAmM,CAAI,C,UADF4M,EAAK,EAAG,GAACvX,EAAAgE,CAAA,C,uBAKS,IAAAjF,EAAAnlC,MAAA,WAAAm2B,EAAK,CAAA,CAAC,MAAM,MAAI,EAApC4O,GAAIH,EAAA,C,6EAA6DnP,MAAAp1B,EAAA4uC,EAAA9Y,EAAK,CAAA,CAAC,MAAM,UAAU,CAAA,E,yCADrFglB,EAAS,GAAIhlB,EAAK,CAAA,CAAC,OAAKiQ,EAAAqE,CAAA,C,sBAK1B,IAAAyG,EAAIzxC,GAAA,EAAJ0vC,EAAA7uC,EAAA4wC,CAAI,E,QAEkB,IAAA/L,EAAAnlC,MAAA,WAAAm2B,EAAK,CAAA,CAAC,GAAG,MAAI,EAAjC4O,GAAI2F,EAAA,C,6EAA0DjV,MAAAp1B,EAAAgvC,EAAAlZ,EAAK,CAAA,CAAC,GAAG,UAAU,CAAA,E,+BAFnFuC,EAAAwY,CAAI,EACFzb,EAAA,GAAAp1B,EAAA8uC,EAAA,GAAAhK,GAAA,GAAA,EAAA,EAAA,KAAA9C,EAAE,WAAW,CAAA,CAAA,EADfnN,EAAA0P,EAAAsM,CAAI,C,UADF/a,EAAK,CAAA,CAAC,IAAMA,EAAK,CAAA,CAAC,GAAG,OAASA,EAAK,CAAA,CAAC,OAAO,MAAIiQ,EAAAuE,CAAA,C,uBAQ5B,IAAAxF,EAAAnlC,MAAA,YAAAm2B,EAAK,CAAA,CAAC,OAAO,UAAQ,EAA1C4O,GAAIH,EAAA,C,wFAA8EnP,MAAAp1B,EAAAkvC,EAAApZ,EAAK,CAAA,CAAC,OAAO,IAAI,CAAA,E,yCADjGA,EAAK,CAAA,CAAC,QAAMiQ,EAAA6D,CAAA,C,GAvBlBvR,EAAA6M,CAAI,EA4BJ,IAAAqY,EAAIr9C,EA5BJglC,EAAI,CAAA,EA4BJkK,EAAArvC,EAAAw9C,EAAI,EAAA,EAAJ7S,EAAAxqC,EAAAq9C,EAAI,CAAA,E,MAKF,IAAAtM,EAAI5xC,GAAA,EAAJiwC,EAAAvvC,EAAAkxC,EAAI,EAAA,E,UAAJla,EAAAka,EAAI,QAAAnM,CAAA,E,aAA4B,KAAK,UAAUhP,EAAK,CAAA,CAAC,OAAO,MAAIsnB,EAAMtnB,EAAK,CAAA,CAAA,CAAE,KAAK,KAAK,C,GAAvFjB,EAAA0P,EAAA0M,CAAI,C,EADFuM,EAAA79C,MAAAy9C,EAAMtnB,EAAK,CAAA,CAAA,CAAE,MAAM,E,qBAjCzBuC,EAAA8b,CAAE,E,cAEE,EAAA/zC,GAAAylC,EAAA,EAAA,cAAA,KAAA8D,EAAA,CAAA,aAAA7E,EAAA,eAAAqC,CAAA,CAAA,EAAApQ,EAAA8O,EAAA,QAIQ/P,EAAK,CAAA,CAAC,MAAM,EACnBwB,EAAA0P,EAAAlR,EAAK,CAAA,CAAC,KAAK,EAsBdiB,EAAAwmB,EAAI,WAA8BznB,EAAK,CAAA,CAAC,SAAS,EAAjDiB,EAAAwmB,EAAI,QAAAnW,CAAA,E,aAzBiB1B,GAAK5P,EAAK,CAAA,CAAC,MAAM,IAAM,UACrB4P,GAAK5P,EAAK,CAAA,CAAC,MAAM,IAAM,YAwBYyS,GAAOzS,EAAK,CAAA,CAAC,SAAS,MAC9E0S,GAAM1S,EAAK,CAAA,CAAC,SAAS,C,GA9BzBjB,EAAA0P,EAAA4P,CAAE,C,GAFN9b,EAAAglB,CAAE,EAAF,IAAArN,EAAA9vC,EAAAm9C,EAAE,CAAA,E,MA2CA,IAAAtW,EAAMxnC,GAAA,EAANkwC,EAAA1vC,EAAAgnC,EAAM,EAAA,E,iBACJ/E,EAAE,cAAa,CAAI,MAAKpiC,EAAEs9C,CAAI,CAAA,CAAC,OAASJ,EAAK,CAAA,CAAA,C,GAD/CtnB,EAAA,QAAAuR,MAAM1mC,EAAuEgiC,EAAM,EAAI,CAAA,EAAvFxN,EAAA0P,EAAAwC,CAAM,C,UADH,CAAAnnC,EAAAyiC,CAAG,GAAAziC,EAAIs9C,CAAI,CAAA,CAAC,OAASJ,EAAK,GAAA/W,EAAA0K,CAAA,C,mBA7CtBnM,EAAA,OAAA,SAAW,EAACyB,EAAAP,CAAA,EAAAO,EAAAwF,EAAA,EAAA,C,aAFhB,C,0/CCpCR,SAAA4S,GAAA,EAAA,EAAA,C,QAKE,IAAIC,EAAyCl9C,EAAAojC,EAAA,UAAA,EAAG,EAAK,EAErD,eAAe+Z,EAAI,EAAU,EAAW,EAAQ,EAAW,KAAM,EAC3D,IAAa,QAAQjQ,CAAQ,IAI7B,MAFc9J,EAAA,SAAU,YAAOA,EAAA,IAAW,MAAMjG,EAAU4E,CAAS,EAAGwE,CAAM,GAEtE,MAAKnD,EAAA,SAAA,CACjB,CAEA,IAAM3D,EAAU,GACd0d,EAAG,iFAAA,CAEC,GAAIC,EAAQ,EAAE,EAChBtc,EAAE,0BAA0B,EAC5BA,EAAE,0BAA0B,CAAA,EAG1Buc,GAAY,EAAU,EAAQ,EAAQ,EAAW,OACrDF,EAAG,4BAC2BhQ,EAAQ,+BAAA,CAClC,GAAInI,EAAO,EAAE,EACfuB,EACA2G,CAAQ,EAGNoQ,EAAiB,GACrBD,EAAS,gBAAiBrY,EAAQlE,EAAE,6BAA4B,CAAI,MAAOkE,EAAO,KAAK,CAAA,CAAA,EAEnFuY,EAAS,GACbF,EACE,cACArY,EACAlE,EAAE,0BAAyB,CAAI,MAAOkE,EAAO,KAAK,CAAA,EAClDlE,EAAE,0BAAyB,CAAI,MAAOkE,EAAO,KAAK,CAAA,CAAA,EAGhDwY,EAAW,GAAWH,EAAS,gBAAiBrY,EAAQlE,EAAE,4BAA2B,CAAI,MAAOkE,EAAO,KAAK,CAAA,CAAA,EAE5GyY,MACJN,EAAG,gFAAA,CAEC,KAAI/Z,EAAA,MAAQ,IAAI,EAClBtC,EAAE,gCAAgC,EAClCA,EAAE,wCAAuC,CAAI,WAAUsC,EAAA,MAAQ,UAAU,CAAA,CAAA,EAIzEsa,EAAcz9C,EAAO,EAAK,EAC1B09C,EAAa19C,EAAO,EAAK,EAEvB29C,EAAQ19C,MAAAC,EAAYu9C,CAAW,EAASta,EAAA,MAAA,SAAiBA,EAAA,MAAA,SAAS,MAAM,EAAG,CAAK,CAAA,EAChF0I,EAAO5rC,MAAAC,EAAYw9C,CAAU,EAASva,EAAA,MAAA,QAAgBA,EAAA,MAAA,QAAQ,MAAM,EAAG,CAAK,CAAA,EAGnF,IAAAH,EAAGljC,GAAA,EACD4oC,EAAGvoC,EADL6iC,CAAG,EAECuF,EAAOpoC,EADTuoC,CAAG,EAECkV,EAAEz9C,EADJooC,CAAO,EACLlQ,EAAAj4B,EAAAw9C,EAAE,EAAA,EAAF1a,EAAA7iC,EAAAu9C,EAAE,CAAA,E,MAGA,IAAA3a,EAAC7jC,GAAA,EAADymC,EAAAzlC,EAAA6iC,EAAC,EAAA,EAA6BhP,EAAA,GAAA3zB,EAAAulC,EAAAlC,CAAA,EAAA,KAAA9C,EAAE,sBAAsB,CAAA,CAAA,EAAtDnN,EAAA0P,EAAAH,CAAC,C,mBAED8P,EAAExyC,EAAA6jC,CAAA,EAAFhN,EAAA2b,EAAE,OAAA7yC,EACMy9C,CAAQ,EAAI,GAASR,EAAQ,IAAE,EAAnB,IAAO,CACvB,IAAAnK,EAAE1zC,GAAA,EACAupC,EAAG1oC,EADL6yC,CAAE,EAEEjP,EAAI5jC,EADN0oC,CAAG,EACD9C,EAAA3lC,EAAA2jC,EAAI,EAAA,EACJ6B,EAAMvlC,EADN0jC,EAAI,CAAA,EACJ0J,EAAArtC,EAAAwlC,EAAM,EAAA,EAFR1O,EAAA2R,CAAG,EAOH,IAAAnE,EAAIrkC,EAPJwoC,EAAG,CAAA,EAOH8E,EAAAvtC,EAAAskC,EAAI,EAAA,EAEJ0E,EAAG/oC,EAFHqkC,EAAI,CAAA,EAGF6K,EAAIpvC,EADNipC,CAAG,EACDyE,EAAAztC,EAAAmvC,EAAI,EAAA,EAGJG,EAAIrvC,EAHJkvC,EAAI,CAAA,EAGJxB,EAAA3tC,EAAAsvC,EAAI,EAAA,EAJNxY,EAAAkS,CAAG,EAVLlS,EAAA8b,CAAE,E,cAEkC7c,EAAA4P,EAAA7lC,EAAAi9C,CAAO,CAAA,CAAC,WAAa,GAAG,E,OAMhBhnB,EAAAwX,EAAAztC,EAAAi9C,CAAO,CAAA,CAAC,WAAa,EAAE,EAG/DvnB,EAAA2Z,EAAI,QAAAvJ,CAAA,E,oBAPFnF,EAAE,iBAAiB,MAOTuG,GAAMlnC,EAACi9C,CAAO,CAAA,CAAC,eAAe,MACxCtc,EAAE,qBAAoB,CAAI,KAAMwG,GAAKnnC,EAACi9C,CAAO,CAAA,CAAC,eAAe,CAAA,CAAA,MAEzDtc,EAAE,mBAAkB,CAAI,KAAMsG,GAAGjnC,EAACi9C,CAAO,CAAA,CAAC,SAAS,CAAA,CAAA,C,GAXzD9oB,EAAA,QAAAuR,MAAoEpG,EAAMt/B,EAACi9C,CAAO,CAAA,CAAA,EAHtFzpB,EAAA0P,EAAA4P,CAAE,C,GAFN9b,EAAA6b,CAAE,EAAF,IAAApK,EAAAtoC,EAAA0yC,EAAE,CAAA,E,MAuBA,IAAAjN,EAAMvmC,GAAA,EAAN0uC,EAAA7tC,EAAA0lC,EAAM,EAAA,E,iBACJjF,EAAE,qBAAoB,CAAI,MAAKsC,EAAA,MAAQ,SAAS,OAAS,CAAK,CAAA,C,GADhE9O,EAAA,QAAAyR,MAAMtlC,EAAuEi9C,EAAc,EAAI,CAAA,EAA/F/pB,EAAA0P,EAAA0C,CAAM,C,UADH,CAAA5lC,EAAAu9C,CAAW,GAAAta,EAAA,MAAU,SAAS,OAAS,GAAKyB,EAAAgE,CAAA,C,mBAzBzCzF,EAAA,MAAA,SAAS,SAAW,EAACyB,EAAAP,CAAA,EAAAO,EAAAwF,EAAA,EAAA,C,GAHjClT,EAAAqR,CAAO,EAoCP,IAAAsV,EAAOx9C,EApCPkoC,EAAO,CAAA,EAqCLuV,EAAE39C,EADJ09C,CAAO,EACL1P,EAAA/tC,EAAA09C,EAAE,EAAA,EAAF/U,GAAA1oC,EAAAy9C,EAAE,CAAA,E,MAGA,IAAAhQ,EAAC1uC,GAAA,EAADkvC,EAAAluC,EAAA0tC,EAAC,EAAA,EAA6B7Z,EAAA,GAAA3zB,EAAAguC,EAAA3K,CAAA,EAAA,KAAA9C,EAAE,qBAAqB,CAAA,CAAA,EAArDnN,EAAA0P,EAAA0K,CAAC,C,mBAEDqF,EAAE5yC,EAAAitC,CAAA,EAAFpW,EAAA+b,EAAE,OAAAjzC,EACM2rC,CAAO,EAAI,GAAQ9G,EAAO,IAAE,EAAjB,IAAM,CACrB,IAAAmO,EAAErzC,GAAA,EACAypC,EAAGnpC,EADL+yC,CAAE,EAEEpD,EAAI3vC,EADNmpC,CAAG,EACDN,EAAA7oC,EAAA2vC,CAAI,E,CAC0B,IAAAnM,EAAA1jC,MAAA,mBAAAC,EAAA6kC,CAAM,CAAA,CAAC,IAAE,EAArCxB,GAAIyF,EAAA,C,iGACF/U,MAAA3zB,EAAAkuC,EAAAtuC,EAAA6kC,CAAM,CAAA,CAAC,KAAK,CAAA,E,kDAGZ,IAAA6L,EAAInxC,GAAA,EAAJgvC,EAAAruC,EAAAwwC,EAAI,EAAA,EAAqC3c,EAAA,GAAA3zB,EAAAmuC,EAAA9K,CAAA,EAAA,KAAA9C,EAAE,kBAAkB,CAAA,CAAA,EAA7DnN,EAAA0P,EAAAwN,CAAI,C,QAEJ,IAAAmJ,EAAIr6C,GAAA,EAAJyvC,EAAA/uC,EAAA25C,EAAI,EAAA,EAAuC9lB,EAAA,GAAA3zB,EAAA6uC,EAAAxL,CAAA,EAAA,KAAA9C,EAAE,uBAAuB,CAAA,CAAA,EAApEnN,EAAA0P,EAAA2W,CAAI,C,UAHF75C,EAAA6kC,CAAM,CAAA,CAAC,UAASH,EAAAuE,CAAA,EAAAjpC,EAEV6kC,CAAM,CAAA,CAAC,OAAKH,EAAA6D,EAAA,CAAA,C,GANxBvR,EAAA4Y,CAAI,EAWJ,IAAAkK,EAAI35C,EAXJyvC,EAAI,CAAA,EAYFlC,EAAAztC,EADF65C,CAAI,EACF5K,EAAAhvC,EAAAwtC,EAAA,EAAA,EAAAvE,EAAAhpC,EAAAutC,EAAA,CAAA,E,MASE,IAAAM,EAAMvuC,GAAA,EAAN6vC,EAAApvC,EAAA8tC,EAAM,EAAA,EACJja,EAAA,GAAA3zB,EAAAkvC,EAAA7L,CAAA,EAAA,KAAA9C,EAAE,kBAAkB,CAAA,CAAA,EADtBxM,EAAA,QAAA6Z,MAAyDqP,EAAOr9C,EAAC6kC,CAAM,CAAA,CAAA,EAAvErR,EAAA0P,EAAA8K,CAAM,C,QAIN,IAAAK,EAAA3uC,GAAA,EAAA+vC,EAAAvvC,EAAAmuC,EAAA,EAAA,EAKEta,EAAA,GAAA3zB,EAAAqvC,EAAAhM,CAAA,EAAA,KAAA9C,EAAE,gBAAgB,CAAA,CAAA,EALpBxM,EAAA,QAAAka,MAGgB+O,EAAKp9C,EAAC6kC,CAAM,CAAA,CAAA,EAH5BrR,EAAA0P,EAAAmL,CAAA,C,UALEruC,EAAA6kC,CAAM,CAAA,CAAC,UAASH,EAAA8J,CAAA,EAAA9J,EAAA+J,EAAA,EAAA,C,GATtBzX,EAAA8iB,CAAI,EAZN9iB,EAAAoS,CAAG,EAqCH,IAAA2Q,EAAI55C,EArCJipC,EAAG,CAAA,EAqCHyG,EAAA3vC,EAAA65C,EAAI,EAAA,EAEJ/J,EAAG7vC,EAFH45C,EAAI,CAAA,EAGFC,EAAI/5C,EADN+vC,CAAG,EACDC,EAAA/vC,EAAA85C,EAAI,EAAA,EACJ8D,EAAI39C,EADJ65C,EAAI,CAAA,EACJzJ,EAAArwC,EAAA49C,EAAI,EAAA,EAFN9mB,EAAAgZ,CAAG,EAxCLhZ,EAAAgc,CAAE,E,mBAsC0C/c,EAAA4Z,EAAA7vC,EAAA6kC,CAAM,CAAA,CAAC,WAAS7kC,EAAI6kC,CAAM,CAAA,CAAC,QAAQ,EAGnD5O,EAAAga,EAAAjwC,EAAA6kC,CAAM,CAAA,CAAC,WAAa,GAAG,EAC/CnP,EAAAooB,EAAI,QAAAhY,CAAA,E,aAvBAnF,EAAE,mBAAmB,MAuBbuG,GAAMlnC,EAAC6kC,CAAM,CAAA,CAAC,UAAU,MAAIlE,EAAE,qBAAoB,CAAI,KAAMwG,GAAKnnC,EAAC6kC,CAAM,CAAA,CAAC,UAAU,CAAA,CAAA,C,GA5B7F1Q,EAAA,QAAAuZ,MAGgByP,EAAan9C,EAAC6kC,CAAM,CAAA,CAAA,EAjB1CrR,EAAA0P,EAAA8P,CAAE,C,GAFNhc,EAAAic,CAAE,EAAF,IAAA5J,EAAAlpC,EAAA8yC,EAAE,CAAA,E,MAmDA,IAAA2E,EAAMv4C,GAAA,EAANoxC,EAAAvwC,EAAA03C,EAAM,EAAA,E,iBACJjX,EAAE,qBAAoB,CAAI,MAAKsC,EAAA,MAAQ,QAAQ,OAAS,CAAK,CAAA,C,GAD/D9O,EAAA,QAAAyjB,MAAMt3C,EAAuEk9C,EAAa,EAAI,CAAA,EAA9FhqB,EAAA0P,EAAA0U,CAAM,C,UADH,CAAA53C,EAAAw9C,CAAU,GAAAva,EAAA,MAAU,QAAQ,OAAS,GAAKyB,EAAA0K,CAAA,C,oBArDvCnM,EAAA,MAAA,QAAQ,SAAW,EAACyB,EAAAqE,CAAA,EAAArE,EAAAmZ,EAAA,EAAA,C,GAHhC7mB,EAAA2mB,CAAO,EArCT3mB,EAAAwR,CAAG,EAsGH,IAAAqP,GAAM13C,EAtGNqoC,EAAG,CAAA,EAsGHmI,GAAAzwC,EAAA23C,GAAM,EAAA,EAvGR7gB,EAAA8L,CAAG,E,YACD3L,GAAAqR,EAAG,EAAA,0BAAgCuU,EAAO,EAAG,iBAAmB,IAAE,E,4BAE3Cpc,EAAE,mBAAmB,MAoCrBA,EAAE,kBAAkB,MAiEzCA,EAAE,8BAA8B,C,GADlCxM,EAAA,QAAA0jB,GAAkFyF,CAAiB,EAvGrG9pB,EAAA0P,EAAAJ,CAAG,E,GAFI,C,+1BC1DR,SAAA0b,GAAA,EAAA,EAAA,C,QAKE,IAAI/E,EAA0Ct4C,EAAA8hC,EAAA,YAAA,EAAG,EAAK,EAAEwY,EAAKt6C,EAAA8hC,EAAA,QAAA,EAAG,CAAC,EAE7DjC,EAAM5/B,EAAO,EAAK,EAEhBqxC,EAAKpxC,MAAAC,EAAY0/B,CAAG,EAAAiC,EAAA,KAAAA,EAAA,KAAe,MAAM,EAAGwY,EAAK,CAAA,CAAA,EAQjDgD,EAAI,CACR,OAAQ,cACR,QAAS,aACT,KAAM,e,EAGR,SAASjY,EAAK,EAAM,CAClB,IAAM5S,EAAG,gBAAmBmI,IACtB2iB,EAAO/d,EAAE/M,CAAG,EAElB,OAAO8qB,IAAS9qB,EAAMmI,EAAO2iB,CAC/B,CAEA,eAAepf,EAAO,EAAO,EAAQ,CACnC,IAAMxE,EAAO2e,EAAS,EAAGle,EAAM,OAAO,WAAaA,EAAM,QAAQ,KAC3DwR,EAAW4R,EACbhe,EAAE,8BAA6B,CAAI,MAAI,CAAA,EACvCA,EAAE,wBAAuB,CAAI,KAAM6F,EAAKjL,EAAM,IAAI,CAAA,CAAA,EAEtD,GAAE,CAAG,QAAQwR,CAAQ,EAAG,OAExB,IAAMX,EAAO,MAAKnJ,EAAA,SAAU,YAAOA,EAAA,IAC7B,MAAM;;;;IAAM,CAAI,GAAI1H,EAAM,GAAI,QAAM,CAAA,CAAA,EAG1C,GAAE,CAAG6Q,EAAM,OAEX,IAAM6P,EAAQ7P,EAAK,YAAY,QAEtBnJ,EAAA,SAAA,IAAItC,EAAE,iBAAgB,CAAI,OAAK,CAAA,CAAA,EAExC,MAAKsC,EAAA,SAAA,CACP,C,uBAIC,IAAAF,EAACtiC,GAAA,EAAD03B,EAAA12B,EAAAshC,EAAC,EAAA,EAA6BhP,EAAA,GAAAryB,EAAAy2B,EAAAsL,CAAA,EAAA,KAAA9C,EAAE,cAAc,CAAA,CAAA,EAA9CnN,EAAA0P,EAAAH,CAAC,C,mBAED8P,EAAErxC,EAAA8rC,CAAA,EAAFpW,EAAA2b,EAAE,OAAAvxC,EACMmxC,CAAK,EAAI,GAAOlX,EAAM,IAAE,EAAf,IAAK,CAClB,IAAAuX,EAAE9xC,GAAA,EACA8hC,EAAGnhC,EADLmxC,CAAE,EAEEjP,EAAIliC,EADNmhC,CAAG,EAEC0B,EAAI7iC,EADNkiC,CAAI,EACF8B,EAAAlkC,EAAA+iC,EAAI,EAAA,EAAJiE,EAAA7mC,EAAA4iC,EAAI,CAAA,E,OAGkB,IAAAf,EAAApiC,MAAA,WAAAC,EAAAi6B,CAAK,CAAA,CAAC,MAAM,MAAI,EAApC8H,GAAIH,EAAA,C,iGACFnP,MAAAryB,EAAAmkC,EAAAvkC,EAAAi6B,CAAK,CAAA,CAAC,MAAM,UAAU,CAAA,E,wCAIP,IAAAkI,EAAApiC,MAAA,YAAAC,EAAAi6B,CAAK,CAAA,CAAC,OAAO,UAAQ,EADtC8H,GAAAH,EAAA,C,iGAIEnP,MAAAryB,EAAA6rC,EAAAjsC,EAAAi6B,CAAK,CAAA,CAAC,OAAO,IAAI,CAAA,E,yCATjBke,EAAS,GAAAn4C,EAAIi6B,CAAK,CAAA,CAAC,MAAKmJ,EAAAgE,CAAA,EAAApnC,EAInBi6B,CAAK,CAAA,CAAC,QAAMmJ,EAAAqE,EAAA,CAAA,C,sBAUnB,IAAAsG,EAAI1uC,GAAA,EAAJ8sC,EAAAhsC,EAAA4tC,EAAI,EAAA,EAA6Btb,EAAA,GAAAryB,EAAA+rC,EAAAhK,CAAA,EAAA,KAAA9C,EAAE,gBAAgB,CAAA,CAAA,EAAnDnN,EAAA0P,EAAAmM,CAAI,C,UADF/tC,EAAAi6B,CAAK,CAAA,CAAC,UAAQmJ,EAAAuE,CAAA,C,GAhBpBjS,EAAA6M,CAAI,EAqBJ,IAAA2L,EAAI5tC,EArBJiiC,EAAI,CAAA,EAsBF6B,EAAM/jC,EADR6tC,CAAI,EACF7B,EAAAlsC,EAAAikC,EAAM,EAAA,EAANoD,EAAAlnC,EAAA8jC,EAAM,CAAA,E,MAIJ,IAAAE,EAAAhlC,GAAA,EAAAitC,EAAApsC,EAAAmkC,EAAA,EAAA,EAKE7R,EAAA,GAAAryB,EAAAmsC,EAAApK,CAAA,EAAA,KAAA9C,EAAE,qBAAqB,CAAA,CAAA,EALzBxM,EAAA,QAAAyR,MAGgBtG,EAAMh+B,EAACi6B,CAAK,EAAE,EAAI,CAAA,EAHlC/H,EAAA0P,EAAA0C,CAAA,C,UADEtkC,EAAAi6B,CAAK,CAAA,CAAC,OAAS,WAASmJ,EAAA6D,CAAA,C,GAJ9BvR,EAAAwY,CAAI,EAtBNxY,EAAA8L,CAAG,EAsCH,IAAA0F,EAAG5mC,EAtCHkhC,EAAG,CAAA,EAsCH5L,EAAAsR,EAAG,OAAAlnC,EACKi6B,CAAK,CAAA,CAAC,OAAU,GAAOkB,GAAK,EAAZ,IAAK,CACzB,IAAAmT,EAAI/uC,GAAA,E,MAAJ,IAAAktC,EAAAtsC,EAAAmuC,EAAI,EAAA,E,MAAJ,EAAA9tC,GAAA8tC,EAAI,EAAA,QAAA,KAAAtH,EAAA,CAAA,mBAAA7E,CAAA,CAAA,EAAoExN,EAAA8X,EAAAtR,CAAK,C,EAAlC,KAAAA,EAAM,WAAW,QAAQ,CAAA,C,EAApEjJ,EAAA0P,EAAA0M,CAAI,C,GAFR5Y,EAAAwR,CAAG,EAMH,IAAAG,EAAG/mC,EANH4mC,EAAG,CAAA,EAMHQ,EAAArnC,EAAAgnC,CAAG,E,MAEC,IAAA+H,EAAI5vC,GAAA,EAAJmtC,EAAAxsC,EAAAivC,EAAI,EAAA,E,UAAJhb,EAAAgb,EAAI,QAAAjN,CAAA,E,aAAmC6D,GAAMhmC,EAACi6B,CAAK,CAAA,CAAC,QAAQ,MAC1D+L,GAAMhmC,EAACi6B,CAAK,CAAA,CAAC,QAAQ,C,GADvB/H,EAAA0P,EAAAwN,CAAI,C,UADFpvC,EAAAi6B,CAAK,CAAA,CAAC,SAAS,QAAMmJ,EAAA8J,CAAA,C,sBAMvB,IAAAqL,EAAI94C,GAAA,EAAJqtC,EAAA3sC,EAAAo4C,EAAI,EAAA,EAAmB9lB,MAAAryB,EAAA0sC,EAAA9sC,EAAAi6B,CAAK,CAAA,CAAC,OAAO,KAAK,CAAA,EAAzC/H,EAAA0P,EAAA2W,CAAI,C,UADFv4C,EAAAi6B,CAAK,CAAA,CAAC,QAAMmJ,EAAA0K,CAAA,C,GAGhB,IAAA0K,EAAIl4C,EAAAunC,EAAA,CAAA,EAAJmF,EAAA7sC,EAAAq4C,EAAI,EAAA,EACJC,EAAIn4C,EADJk4C,EAAI,CAAA,EACJvL,GAAA9sC,EAAAs4C,EAAI,EAAA,EAVN/iB,EAAA2R,CAAG,EA7CL3R,EAAA8b,CAAE,E,kBAGI3b,GAAAqN,EAAI,EAAA,kBAAwBia,EAAIn9C,EAACi6B,CAAK,CAAA,CAAC,OAAS,eAAa,IAAA,E,cAmD/D7F,EAAAokB,EAAI,QAAA/T,CAAA,E,OACJrQ,EAAAqkB,EAAI,QAAA6E,CAAA,E,cApD+DpY,EAAIllC,EAACi6B,CAAK,CAAA,CAAC,IAAI,MAsB9EoF,EAAE,eAAe,MA6BTuG,GAAM5lC,EAACi6B,CAAK,CAAA,CAAC,SAAS,MAAIoF,EAAE,gBAAe,CAAI,KAAMwG,GAAK7lC,EAACi6B,CAAK,CAAA,CAAC,SAAS,CAAA,CAAA,MAC1E2L,GAAM5lC,EAACi6B,CAAK,CAAA,CAAC,SAAS,MAAIoF,EAAE,iBAAgB,CAAI,KAAMwG,GAAK7lC,EAACi6B,CAAK,CAAA,CAAC,SAAS,CAAA,CAAA,C,GA/BrFpH,EAAA,QAAAuR,MAAoEpG,EAAMh+B,EAACi6B,CAAK,EAAE,EAAK,CAAA,EAxB7F/H,EAAA0P,EAAA4P,CAAE,C,GAFN9b,EAAA6b,CAAE,EAAF,IAAAxJ,EAAAznC,EAAAixC,EAAE,CAAA,E,MAgEA,IAAAnF,EAAMzsC,GAAA,EAANguC,EAAAxtC,EAAAisC,EAAM,EAAA,E,iBACJ/M,EAAE,cAAa,CAAI,MAAKsC,EAAA,KAAO,OAASwY,EAAK,CAAA,CAAA,C,GAD/CtnB,EAAA,QAAAuZ,MAAM3rC,EAAuEi/B,EAAM,EAAI,CAAA,EAAvFxN,EAAA0P,EAAAwK,CAAM,C,UADH,CAAApsC,EAAA0/B,CAAG,GAAAiC,EAAA,KAAS,OAASwY,EAAK,GAAA/W,EAAA6K,CAAA,C,mBAlExBtM,EAAA,KAAA,SAAW,EAACyB,EAAAP,CAAA,EAAAO,EAAAwF,EAAA,EAAA,C,aAFd,C,2DClDR,SAAA6U,GAAA,EAAA,EAAA,CAGE,IAAIrkB,EAAYv4B,EAAA8gC,EAAA,OAAA,EAAG,IAAI,EAGxB,IAAAwC,EAAGxjC,GAAA,EAAHi1B,EAAAuO,EAAG,OAAAxC,EAAA,OAAA,CACerP,EAAK6N,EAAM1F,KAAO0F,GAAI,EAAA,IAAA,C,wBAAtB,IAAA7N,MAAItxB,EAAAgiC,CAAA,CAAA,CAAA,GAAC7C,MAAKn/B,EAAAgiC,CAAA,CAAA,CAAA,GAACvI,MAAKz5B,EAAAgiC,CAAA,CAAA,CAAA,G,CAEf,IAAAb,EAAArhC,MAAA,GAAA6gC,EAAA,OAAAxB,EAAI,GAAA,EACIqE,EAAA1jC,OAAAs4B,EAAI,GAAI,QAAU9G,EAAG,EAAG,kBAAoB,EAAE,EACrDmS,EAAA3jC,OAAAs4B,EAAI,GAAI,QAAU9G,EAAG,EAAG,OAAS,IAAA,EAAS,EAH1DyP,GAAAH,EAAA,C,oIAKEnP,MAAAvxB,EAAA21B,EAAA4D,EAAI,CAAA,CAAA,E,kCAPV/E,EAAAyO,CAAG,EAAH1R,MAAAtxB,EAAAgjC,EAAG,aAAAxC,EAAA,KAAA,CAAA,EAAHzP,EAAA0P,EAAAuC,CAAG,CAFI,C,guICJR,SAAA0b,GAAA,EAAA,EAAA,C,QAqBE,IAAIzmB,EAAiBh2B,EAAAu+B,EAAA,OAAA,EAAG,IAAI,EAEtBP,EAASC,GAAS,EAElBye,EAAM,CACT,CAAA,WAAYzgB,EAAE,uBAAuB,CAAA,EACrC,CAAA,OAAQA,EAAE,mBAAmB,CAAA,EAC7B,CAAA,QAASA,EAAE,oBAAoB,CAAA,C,EAG5B0gB,EAAI,CACP,CAAA,YAAa1gB,EAAE,yBAAyB,CAAA,EACxC,CAAA,aAAcA,EAAE,0BAA0B,CAAA,EAC1C,CAAA,aAAcA,EAAE,0BAA0B,CAAA,EAC1C,CAAA,aAAcA,EAAE,0BAA0B,CAAA,EAC1C,CAAA,aAAcA,EAAE,0BAA0B,CAAA,EAC1C,CAAA,aAAcA,EAAE,0BAA0B,CAAA,EAC1C,CAAA,SAAUA,EAAE,qBAAqB,CAAA,EACjC,CAAA,YAAaA,EAAE,wBAAwB,CAAA,EACvC,CAAA,WAAYA,EAAE,uBAAuB,CAAA,EACrC,CAAA,SAAUA,EAAE,qBAAqB,CAAA,C,EAG9B2gB,EAAO,CAAA,GAAOF,EAAM,GAAKC,CAAI,EA+C7BxL,EAAW5P,GAAc,EAE3BrB,EAAQjgC,EAAO,IAAI,EACnB48C,EAAS58C,EAAO,IAAI,EACpBwxC,EAASxxC,EAAMC,EAAA,CAAA,CAAA,CAAA,EACfkyC,EAAYnyC,EAAMC,EAAA,CAAA,CAAA,CAAA,EAClB48C,EAAQ78C,EAAMC,EAAA,CAAA,CAAA,CAAA,EACdgnC,EAAUjnC,EAAO,EAAI,EACrB88C,EAAQ98C,EAAO,IAAI,EACnB+8C,EAAO/8C,EAAO,IAAI,EAClBg9C,EAAYh9C,EAAO,EAAK,EAEtBi9C,EAAQ/8C,MAAY,GAAOC,EAAC8/B,CAAK,GAAA9/B,EAAIy8C,CAAM,GAAAz8C,EAAI8/B,CAAK,CAAA,CAAC,OAAI9/B,EAAKy8C,CAAM,CAAA,CAAC,KAAI,EAEzEM,EAAK,CACR,CAAA,KAAM,GAAIlhB,EAAE,qBAAqB,CAAA,EACjC,CAAA,SAAU,UAAWA,EAAE,oBAAoB,CAAA,EAC3C,CAAA,UAAW,WAAYA,EAAE,qBAAqB,CAAA,EAC9C,CAAA,WAAY,YAAaA,EAAE,sBAAsB,CAAA,C,EAG9CmhB,EAAQj9C,MAAAC,EACZ8/B,CAAA,E,CAEM9/B,EAAA8/B,CAAK,CAAA,CAAC,KACN9/B,EAAA8/B,CAAK,CAAA,CAAC,OAASjE,EAAE,iBAAiB,EAClC77B,EAAA8/B,CAAK,CAAA,CAAC,UACFjE,EAAE,uBAAsB,CAAI,KAAMwG,GAAKriC,EAAC8/B,CAAK,CAAA,CAAC,YAAajE,EAAE,aAAa,CAAA,CAAA,CAAA,EAC1EA,EAAE,oBAAoB,CAEzB,CAAA,CAAA,OAAO,OAAO,CAAA,CACd,KAAK,KAAK,EACb,EAAE,EAGFohB,MACJ/E,EAAG,gFAAA,CAEC,KAAI/Z,EAAA,IAAA,EACNtC,EAAE,yBAAyB,CAAA,EAGzBqhB,MACJ,QAAQrhB,EAAE,0BAAyB,CAAI,WAAU77B,EAAE8/B,CAAK,CAAA,CAAC,UAAU,CAAA,CAAA,GACnEoY,EAAG,oFAAA,CAEC,KAAI/Z,EAAA,IAAA,EACNtC,EAAE,qBAAqB,CAAA,EAGrBshB,MACJjF,EAAG,mFAAA,CAEC,KAAI/Z,EAAA,IAAA,EACNtC,EAAE,0BAA0B,CAAA,EAGhC,eAAewL,IAAO,CACpBrX,EAAA8W,EAAU,EAAI,EAEd,GAAI,CACF,IAAMQ,EAAO,MAAKnJ,EAAA,IAAK,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAAK,CAAI,KAAIA,EAAA,IAAA,CAAA,EAE1CnO,EAAA8P,EAAQwH,EAAK,MAAK,EAAA,EAClBtX,EAAAysB,EAASnV,EAAK,OAAM,EAAA,EACpBtX,EAAAqhB,EAAS/J,EAAK,OAAM,EAAA,EACpBtX,EAAAgiB,EAAY1K,EAAK,gBAAe,EAAA,EAChCtX,EAAA0sB,EAAQ,OAAO,YAAYF,EAAQ,KAAG,CAAG1tB,KAAG,CAAOA,EAAKwY,EAAK,QAAQxY,IAAQ,EAAE,CAAA,CAAA,EAAA,EAAA,CACjF,OAASuS,EAAQ,CACf0P,EAAS,MAAM1P,CAAM,CACvB,QAAU,CACRrR,EAAA8W,EAAU,EAAK,CACjB,CACF,CAEAO,GAAI,EAEJ,eAAe6Q,EAAI,EAAU,EAAW,EAAQ,CAC9C,IAAM5Q,EAAO,MAAMyJ,EAAS,YAAO5S,EAAA,IAAW,MAAMjG,EAAU4E,CAAS,EAAGwE,CAAM,EAIhF,OAFIgG,GAAM,MAAMD,GAAI,EAEbC,CACT,CAEA,IAAM8V,GAAc,GAAKp9C,EAAK8/B,CAAK,CAAA,CAAC,iBAAiB,KAAM,GAAS9J,EAAK,MAAM,MAAQ2c,EAAM,GAAG,EAC1F0K,GAAW,GAAU,EAAQD,GAAWzK,CAAK,EAC7C2K,GAAa,GAAUF,GAAWzK,CAAK,CAAA,EAAG,WAAa,KAEvD4K,EAAe,GACnBrF,EACEmF,GAAQ1K,CAAK,E,oNAGX,CAAA,IAAKA,EAAM,IAAK,KAAIxU,EAAA,IAAA,EACtBkf,GAAQ1K,CAAK,EACT9W,EAAE,mBAAkB,CAAI,MAAO8W,EAAM,IAAI,CAAA,EACzC9W,EAAE,qBAAoB,CAAI,MAAO8W,EAAM,IAAI,CAAA,C,EAG7C6K,OACJtF,EAC+B,6BAAAsE,EAAQ,KAAG,CAAG1tB,KAAG,IAAUA,EAAG,SAAA,CAAA,CAAY,KAAK,IAAI,EAAA;mCACnD0tB,EAAQ,KAAG,CAAG1tB,KAAG,GAASA,EAAG,KAAMA,GAAG,CAAA,CAAI,KAAK,IAAI,EAAA;S,CAG9E,KAAIqP,EAAA,KACD,GAAA,OAAO,YACR,OAAO,QAAOn+B,EAAC08C,CAAK,CAAA,CAAA,CAAE,KAAG,CAAG5tB,EAAK6D,KAAK,CAAO7D,EAAK6D,IAAU,GAAK,KAAOA,CAAK,CAAA,CAAA,C,EAGjFkJ,EAAE,qBAAqB,C,EAGrB4hB,EAAc,GAClBvF,E;;SAII,CAAA,KAAI/Z,EAAA,KAAE,QAAM,EACdtC,EAAE,sBAAsB,C,EAG5B,eAAe6hB,IAAW,CACxB1tB,EAAA2sB,EAAQ,IAAI,EAEZ,IAAMrV,EAAO,MAAM4Q,EAAG,4EAAA,CAElB,KAAI/Z,EAAA,IAAA,EACNtC,EAAE,uBAAuB,CAAA,EAGvByL,GAAItX,EAAE2sB,EAAQrV,EAAK,oBAAoB,MAAK,EAAA,CAClD,CAEA,eAAeqW,GAAQ,EAAU,EAAc,CAC7C,GAAE,CAAG,QAAQC,CAAY,EAAG,OAE5B5tB,EAAA4sB,EAAO,IAAI,EAEX,IAAMtV,EAAO,MAAM4Q,EAAIhgB,EAAQ,CAAI,KAAIiG,EAAA,IAAA,EAAI,IAAI,EAE/C,GAAE,CAAGmJ,EAAM,OAEX,IAAMuW,EAAS,OAAO,OAAOvW,CAAI,CAAA,CAAE,GAE/BuW,EAAO,UACT9M,EAAS,IAAIlV,EAAE,eAAe,CAAA,GAE9BkV,EAAS,IAAIlV,EAAE,iBAAiB,CAAA,EAChC7L,EAAA4sB,EAAOiB,EAAO,IAAG,EAAA,EAErB,CAEA,IAAM59C,OACJ09C,GAAO,8EAEL9hB,EAAE,sBAAsB,CAAA,EAGtBkiB,OACJJ,GAAO,kFAEL9hB,EAAE,uBAAuB,CAAA,EAGvBmiB,OACJL,GAAO,6EAEL9hB,EAAE,wBAAwB,CAAA,EAG9B,SAASoiB,GAAc,EAAS,CACzB,QAAQpiB,EAAE,gCAA+B,CAAI,MAAOqiB,EAAQ,KAAK,CAAA,CAAA,GAEtEhG,EAAG,mGAAA,CAEC,KAAI/Z,EAAA,KAAE,GAAI+f,EAAQ,EAAE,EACtBriB,EAAE,uBAAuB,CAAA,CAE7B,CAEA,eAAesiB,GAAO,EAAO,CAC3B,IAAMtZ,EAAQlV,EAAM,cACd0N,EAAOwH,EAAM,QAAQ,GAEtBxH,IAELrN,EAAA6sB,EAAY,EAAI,EAEhB,MAAM3E,E;;SAIF,CAAA,KAAI/Z,EAAA,KAAE,MAAOd,CAAI,EACnBxB,EAAE,qBAAqB,C,EAGzB7L,EAAA6sB,EAAY,EAAK,EACjB,EAAM,MAAQ,GAChB,CAEA,SAASuB,IAAc,CAChB,QAAQviB,EAAE,6BAA6B,CAAA,GAE5Cqc,EAAG,+EAAA,CAEC,KAAI/Z,EAAA,IAAA,EACNtC,EAAE,qBAAqB,CAAA,CAE3B,CAEA,SAASwiB,IAAU,CACZ,QAAQxiB,EAAE,wBAAwB,CAAA,GAEvCqc,EAAG,8FAAA,CAEC,KAAI/Z,EAAA,IAAA,EACNtC,EAAE,6BAA6B,CAAA,CAEnC,CAEA,IAAMyiB,GAAY,C,CACf,QAAS,oBAAqBziB,EAAE,0BAA0B,EAAGA,EAAE,2BAA2B,C,GAC1F,MAAO,mBAAoBA,EAAE,wBAAwB,EAAGA,EAAE,yBAAyB,C,GAGtF,SAAS0iB,GAAQ,EAAQ,EAAM,EAAO,CAC/B,QAAQ1iB,EAAE,0BAAyB,CAAI,KAAM2iB,CAAK,CAAA,CAAA,GAEvDtG,E;;SAII,CAAA,KAAI/Z,EAAA,KAAE,QAAM,EACdtC,EAAE,mBAAkB,CAAI,MAAI,CAAA,C,CAEhC,CAEA,SAAS4iB,IAAU,CACZ,QAAQ5iB,EAAE,yBAAwB,CAAI,WAAU77B,EAAE8/B,CAAK,CAAA,CAAC,UAAU,CAAA,CAAA,GAEvEoY,EAAG,uFAAA,CAEC,KAAI/Z,EAAA,IAAA,EACNtC,EAAE,iBAAiB,CAAA,CAEvB,CAEA,SAAS5D,IAAU,CACjBigB,EAAG,uFAAA,CAEC,KAAI/Z,EAAA,IAAA,EACNtC,EAAE,gBAAgB,CAAA,CAEtB,CAEA,eAAegS,IAAS,CACjB,QAAQhS,EAAE,wBAAuB,CAAI,WAAU77B,EAAE8/B,CAAK,CAAA,CAAC,UAAU,CAAA,CAAA,GAMlE,MAJeiR,EAAS,YAAO5S,EAAA,IAC7B,MAAK,0EAAA,CAA8E,KAAIA,EAAA,IAAA,CAAA,CAAA,GAGnFP,EAAO,GAAG,SAAS,CAC/B,C,2BAICiB,GAAOT,EAAA,CAAA,CAAA,C,SAEP,IAAAJ,EAAGpgC,GAAA,EAAHy1B,EAAAjzB,EAAA49B,EAAG,EAAA,EACD/O,EAAA,GAAA5uB,EAAAgzB,EAAAsL,CAAA,EAAA,KAAAoS,EAAS,MAAM,SAAWlV,EAAE,eAAe,CAAA,CAAA,EAD7CnN,EAAA0P,EAAAJ,CAAG,C,UAKQ,IAAA2gB,EAAI,GAAA,CACX,IAAAhL,EAAA71C,GAAA,E,aAAA8yB,EAAA+iB,EAAA,MAAA,GAAA3zC,EACS8/B,CAAK,CAAA,CAAC,QAAQ,OAAK9/B,EAAI8/B,CAAK,CAAA,CAAC,QAAQ,UAAS,UAAA,EADvD,EAAAx/B,GAAAqzC,EAAA,EAAA,sDAAA,KAAAnQ,EAAA,CAAA,MAAA,CAAAxjC,EAMe8/B,CAAK,CAAA,CAAC,QAAQ,KAAK,CAAA,C,GANlCpR,EAAA0P,EAAAuV,CAAA,C,EAUOiL,EAAK,GAAA,C,CACC,IAAAjgB,EAAA5+B,MAAAigC,GAAUhgC,EAAC8/B,CAAK,CAAA,CAAA,EAA7BZ,GAAKd,EAAA,C,6BAb6CO,EAAA5+B,OAAA,CAAA,GAAI,UAAW,MAAO87B,EAAE,YAAY,CAAA,EAAA,EAA1FyT,GAAIlR,EAAA,C,YAAQ,OAAAp+B,EAAA8/B,CAAK,CAAA,CAAC,U,WAAgB,OAAA9/B,EAAA8/B,CAAK,CAAA,CAAC,I,qCAA6D,OAAA9/B,EAAAg9C,CAAQ,C,EAClG,OAWA,Q,mCAIThO,GAAOrL,EAAA,C,eAAW,OAAAoN,EAAS,K,uBAGzB,IAAArN,EAAG3lC,GAAA,EACDghC,EAAIv+B,EADNkjC,CAAG,EACD7C,EAAAzgC,EAAA2+B,EAAI,EAAA,EACJiK,EAAIzoC,EADJw+B,EAAI,CAAA,EACJgC,EAAA3gC,EAAA4oC,EAAI,EAAA,EAFN9W,EAAAwR,CAAG,E,aAEyCvS,EAAA4P,EAAA/gC,EAAA48C,CAAI,CAAA,C,EADpB,KAAA/gB,EAAE,iBAAiB,CAAA,C,EAD/CnN,EAAA0P,EAAAsF,CAAG,C,UADD1jC,EAAA48C,CAAI,GAAAhd,EAAAqE,CAAA,C,sBAQN,IAAAJ,EAAG5lC,GAAA,EACDyhC,EAAIl/B,EADNqjC,CAAG,EACD4E,EAAAroC,EAAAs/B,EAAI,EAAA,EACJ0E,EAAG7jC,EADHm/B,EAAI,CAAA,EACJtN,EAAAgS,EAAG,OAAApkC,EACK28C,CAAK,EAAI,GAAM7nB,GAAI,EAAV,IAAI,CAAS,IAAAyV,EAAIvsC,GAAA,EAAJ2qC,EAAAvoC,EAAAmqC,EAAI,EAAA,EAAEtb,MAAA5uB,EAAAsoC,EAAA7T,CAAI,CAAA,EAAVpG,EAAA0P,EAAAmM,CAAI,C,GADlCrY,EAAAkS,CAAG,EAFLlS,EAAA2R,CAAG,EACyB5U,EAAA,GAAA5uB,EAAAooC,EAAA9J,CAAA,EAAA,KAAA9C,EAAE,kBAAkB,CAAA,CAAA,EADhDnN,EAAA0P,EAAAyF,CAAG,C,UADD7jC,EAAA28C,CAAK,GAAA/c,EAAAuE,CAAA,C,sBAUP,IAAAG,EAAGpmC,GAAA,EACDgtC,EAAG1qC,EADL8jC,CAAG,EAECua,EAAMr+C,EADR0qC,CAAG,EACDrC,EAAAzoC,EAAAy+C,EAAM,EAAA,EACNnU,EAAInqC,EADJs+C,EAAM,CAAA,EACN9V,EAAA3oC,EAAAsqC,EAAI,EAAA,EAFNxY,EAAAgZ,CAAG,EAIH,IAAAK,EAAGhrC,EAJH2qC,EAAG,CAAA,EAKDtK,EAAMpgC,EADR+qC,CAAG,EACDtC,EAAA7oC,EAAAwgC,EAAM,EAAA,EADR1O,EAAAqZ,CAAG,EALLrZ,EAAAoS,CAAG,E,uCAESzI,EAAE,sBAAsB,MAC1BA,EAAE,qBAAqB,MAG0CA,EAAE,wBAAwB,C,GAAjGxM,EAAA,QAAAuR,EAA6Dqc,CAAO,EANxEvuB,EAAA0P,EAAAkG,CAAG,C,UADDtkC,EAAA8/B,CAAK,CAAA,CAAC,iBAAeF,EAAA6D,CAAA,C,sBAavB,IAAAmQ,EAAGz1C,GAAA,EACD41C,EAAGvzC,EADLozC,CAAG,EAECkL,EAAMt+C,EADRuzC,CAAG,EACD5K,EAAA/oC,EAAA0+C,EAAM,EAAA,EACNhU,EAAIvqC,EADJu+C,EAAM,CAAA,EACNxV,EAAAlpC,EAAA0qC,EAAI,EAAA,EACJc,EAAIrrC,EADJuqC,EAAI,CAAA,EACJtB,EAAAppC,EAAAwrC,EAAI,EAAA,EAHN1Z,EAAA6hB,CAAG,EAKH,IAAAgL,EAAGx+C,EALHwzC,EAAG,CAAA,EAMDjT,EAAMtgC,EADRu+C,CAAG,EACDtV,EAAArpC,EAAA0gC,EAAM,EAAA,EACN8H,EAAMroC,EADNugC,EAAM,CAAA,EACNqJ,EAAA/pC,EAAAwoC,EAAM,EAAA,EAFR1W,EAAA6sB,CAAG,EANL7sB,EAAA0hB,CAAG,E,yDAES/X,EAAE,sBAAsB,MAC1BA,EAAE,sBAAqB,CAAI,KAAMwG,GAAKriC,EAAC8/B,CAAK,CAAA,CAAC,mBAAmB,CAAA,CAAA,MACnDjE,EAAE,wBAAwB,MAG+BA,EAAE,sBAAsB,MAC/BA,EAAE,wBAAwB,C,GAD/FxM,EAAA,QAAAyR,EAA6Doc,CAAY,EACzE7tB,EAAA,QAAAuZ,EAA2DuU,CAAO,EARtEzuB,EAAA0P,EAAAwV,CAAG,C,UADD5zC,EAAA8/B,CAAK,CAAA,CAAC,qBAAmBF,EAAA8J,CAAA,C,uBAe3B,IAAAsV,EAAG5gD,GAAA,EACD6gD,EAAGz+C,EADLw+C,CAAG,EAECE,EAAM1+C,EADRy+C,CAAG,EACD7U,EAAAhqC,EAAA8+C,EAAM,EAAA,EADRhtB,EAAA+sB,CAAG,EAGH,IAAAE,EAAG5+C,EAHH0+C,EAAG,CAAA,EAID/V,EAAM1oC,EADR2+C,CAAG,EACD3U,EAAApqC,EAAA8oC,EAAM,EAAA,EADRhX,EAAAitB,CAAG,EAJLjtB,EAAA8sB,CAAG,E,8BAESnjB,EAAE,qBAAoB,CAAI,IAAKsG,GAAGniC,EAAC8/B,CAAK,CAAA,CAAC,WAAW,CAAA,CAAA,MAGDjE,EAAE,eAAe,C,GAA5ExM,EAAA,QAAA6Z,EAAiDjR,EAAO,EAL5DvJ,EAAA0P,EAAA4gB,CAAG,C,WADDh/C,EAAA8/B,CAAK,CAAA,CAAC,aAAWF,EAAA0K,CAAA,C,yBAYnB,IAAA8U,EAAG/gD,GAAA,EACDghD,EAAG7+C,EADL4+C,CAAG,EAECE,EAAM9+C,EADR6+C,CAAG,EACD1U,EAAAvqC,EAAAk/C,EAAM,EAAA,EADRptB,EAAAmtB,CAAG,EAGH,IAAAE,EAAGh/C,EAHH8+C,EAAG,CAAA,EAID9V,EAAM/oC,EADR++C,CAAG,EACDxU,EAAA3qC,EAAAmpC,EAAM,EAAA,EADRrX,EAAAqtB,CAAG,EAJLrtB,EAAAktB,CAAG,E,8BAESp/C,EAAA8/B,CAAK,CAAA,CAAC,UAAYjE,EAAE,mBAAkB,CAAI,IAAKsG,GAAGniC,EAAC8/B,CAAK,CAAA,CAAC,SAAS,CAAA,CAAA,EAAOjE,EAAE,eAAe,MAGxCA,EAAE,cAAc,C,GAA1ExM,EAAA,QAAAka,EAAiDwU,EAAM,EAL3DrvB,EAAA0P,EAAAghB,CAAG,C,WADAp/C,EAAA8/B,CAAK,CAAA,CAAC,WAASF,EAAA6K,EAAA,C,yBAYlB,IAAA+U,EAAGlhD,GAAA,EACDmhD,EAAGj/C,EADLg/C,CAAG,EAECE,EAAMl/C,EADRi/C,CAAG,EACDtU,EAAA/qC,EAAAs/C,EAAM,EAAA,EADRxtB,EAAAutB,CAAG,EAGH,IAAAE,EAAGp/C,EAHHk/C,EAAG,CAAA,EAID3M,EAAMtyC,EADRm/C,CAAG,EACDlU,EAAArrC,EAAA0yC,EAAM,EAAA,EADR5gB,EAAAytB,CAAG,EAJLztB,EAAAstB,CAAG,E,8BAES3jB,EAAE,oBAAmB,CAAI,MAAK77B,EAAE8/B,CAAK,CAAA,CAAC,KAAK,CAAA,MAGajE,EAAE,yBAAyB,C,GAA3FxM,EAAA,QAAAyjB,EAAiDkL,EAAY,EALjEtvB,EAAA0P,EAAAohB,CAAG,C,WADDx/C,EAAA8/B,CAAK,CAAA,CAAC,OAAK,CAAA9/B,EAAK8/B,CAAK,CAAA,CAAC,eAAaF,EAAAiL,EAAA,C,mBAWhB,IAAAlM,EAAA5+B,MAAA,WAAAC,EAAA8/B,CAAK,CAAA,CAAC,MAAI,EAAgCkB,EAAAjhC,MAAA87B,EAAE,mBAAmB,CAAA,EAAtFoe,GAAK5P,GAAA,C,mCAAiC,OAAAzU,EAAI,C,cAAS,OAAAmnB,C,6BAEnD,IAAA6C,GAAGr/C,EAAA8pC,GAAA,CAAA,EAAHO,GAAApqC,EAAAo/C,EAAG,E,0BAEoB,IAAAjhB,EAAA5+B,MAAA87B,EAAE,cAAc,CAAA,EAASmF,EAAAjhC,MAAA87B,EAAE,mBAAmB,CAAA,EAAjEqH,EAAO8H,EAAA,C,yEACL6B,GAAYzO,EAAA,C,YAAQ,OAAAp+B,EAAA8/B,CAAK,CAAA,CAAC,M,kBAAmB,OAAA9/B,EAAAgyC,CAAS,C,EAAY,SAAAyL,C,yCAGjD,IAAA9e,EAAA5+B,MAAA87B,EAAE,cAAc,CAAA,EAASmF,EAAAjhC,MAAA87B,EAAE,mBAAmB,CAAA,EAAjEqH,EAAOmI,EAAA,C,iGAEH,IAAA2U,EAAGvhD,GAAA,EAAH2zB,EAAA4tB,EAAG,OAAAhgD,EACKqxC,CAAM,EAAI,GAAOsB,EAAM,KAAG,EAAhB,IAAK,CACnB,IAAAjK,EAAKlqC,GAAA,EACH6qC,EAAA7oC,EADFkoC,CAAK,EACHjY,EAAA4Y,CAAA,EAAA,IAAAsC,EAAAprC,EAAA8oC,CAAA,EAOa4W,EAAI1/C,EAAAorC,CAAA,EAAJE,EAAAzrC,EAAA6/C,EAAI,EAAA,EAAJhN,EAAA1yC,EAAA0/C,EAAI,CAAA,E,MAEf,IAAAlL,EAAIx2C,GAAA,EAAJwtC,EAAA3rC,EAAA20C,EAAI,EAAA,EAAe9lB,EAAA,GAAA5uB,EAAA0rC,EAAApN,CAAA,EAAA,KAAA9C,EAAC,sBAAuByhB,GAASt9C,EAAC2yC,CAAK,CAAA,GAAA,CAAA,CAAA,EAA1DjkB,EAAA0P,EAAA2W,CAAI,C,EADFsC,EAAAt3C,MAAAu9C,GAASt9C,EAAC2yC,CAAK,CAAA,CAAA,E,MAGjB,IAAAqC,EAAIz2C,GAAA,EAAJ0tC,EAAA7rC,EAAA40C,EAAI,EAAA,EAAe/lB,EAAA,GAAA5uB,EAAA4rC,EAAAtN,CAAA,EAAA,KAAA9C,EAAE,uBAAuB,CAAA,CAAA,EAA5CnN,EAAA0P,EAAA4W,CAAI,C,EADGkL,EAAAngD,MAAAs9C,GAAOr9C,EAAC2yC,CAAK,CAAA,GAAA3yC,EAAK2yC,CAAK,CAAA,CAAC,SAAW,QAAQ,E,iCAXtDzgB,EAAAwW,CAAK,E,UACHjX,EAAA4X,EAAA1K,CAAA,EAAA,EAAA,SAAAqC,EAOA7P,EAAAwa,EAAA,IAAA3rC,EAAA2yC,CAAK,CAAA,CAAC,MAAI,GAAA,EAAA,EAAgCxhB,EAAA0a,EAAA7rC,EAAA2yC,CAAK,CAAA,CAAC,GAAG,C,OAJzC0K,GAAOr9C,EAAC2yC,CAAK,CAAA,MACZ,EAAQ2K,GAASt9C,EAAC2yC,CAAK,CAAA,C,GAJlCtjB,EAAA,SAAAga,MAKiBkU,EAAWv9C,EAAC2yC,CAAK,CAAA,CAAA,EANpCjkB,EAAA0P,EAAAsK,CAAK,C,GAFTxW,EAAA8tB,CAAG,EAAHtxB,EAAA0P,EAAA4hB,CAAG,C,QAoBH,IAAA/hB,EAACv/B,GAAA,EAADs1C,EAAAxzC,EAAAy9B,CAAC,EAAoDM,G,GAAI,EAAA,C,8CAAiBtP,EAAA,GAAA5uB,EAAA8/C,EAAAxhB,CAAA,EAAA,KAAA9C,EAAE,iBAAiB,CAAA,CAAA,E,mCAA7F3J,EAAA+L,CAAC,EAA6BhP,EAAA,GAAA5uB,EAAA2zC,EAAA,GAAArV,GAAA,GAAA,EAAA,EAAA,KAAA9C,EAAE,iBAAiB,CAAA,CAAA,EAAjDnN,EAAA0P,EAAAH,CAAC,C,UArBCj+B,EAAAqxC,CAAM,CAAA,CAAC,OAAMzR,EAAAmgB,CAAA,EAAAngB,EAAAwF,EAAA,EAAA,C,sBAyBf,IAAA0D,EAACnqC,GAAA,EAAD0hD,EAAAjgD,EAAA0oC,EAAC,EAAA,E,iBAAejN,EAAE,qBAAoB,CAAI,OAAM77B,EAAE8/B,CAAK,CAAA,CAAC,YAAY,KAAK,IAAI,CAAA,CAAA,C,GAA7EpR,EAAA0P,EAAA0K,CAAC,C,UADC9oC,EAAA8/B,CAAK,CAAA,CAAC,YAAY,QAAMF,EAAAwgB,CAAA,C,sDAMT,IAAAzhB,EAAA5+B,MAAA87B,EAAE,mBAAmB,CAAA,EAAxCqH,EAAO9E,EAAA,C,yEAEH,IAAA+U,EAACt0C,GAAA,EAAD4hD,EAAAjgD,EAAA2yC,CAAC,EAC6B8B,EAAI10C,EAAAkgD,CAAA,EAAJC,EAAAtgD,EAAA60C,EAAI,EAAA,EAAJ0L,EAAApgD,EAAA00C,CAAI,EADlC/iB,EAAAihB,CAAC,E,2BACqDhiB,EAAAuvB,EAAA1gD,EAAA8/B,CAAK,CAAA,CAAC,UAAU,E;kB,eAApEjE,EAAE,sBAAsB,MACxBA,EAAE,2BAA2B,C,GAF/BnN,EAAA0P,EAAA+U,CAAC,C,UADCnzC,EAAA8/B,CAAK,CAAA,CAAC,YAAUF,EAAA4gB,CAAA,C,gBAMdpuB,EAAAyhB,EAAA,OAAA7zC,EAAA8/B,CAAK,CAAA,CAAC,YAAY,OAAQ,GAAesd,EAAW,UAAU,EAAK,GAAYA,EAAW,aAAa,KAAG,EAAvC,EAAU,EAAA,IAAA,CACjF,IAAAwD,EAAC/hD,GAAA,EAADgiD,EAAArgD,EAAAogD,CAAC,EAEC1L,EAAI30C,EAAAsgD,CAAA,EAAJC,EAAA1gD,EAAA80C,EAAI,EAAA,EAAJ6L,EAAAxgD,EAAA20C,CAAI,EAFNhjB,EAAA0uB,CAAC,E,2BAEyBzvB,EAAA2vB,EAAA9gD,EAAAo9C,CAAU,CAAA,CAAC,UAAU,E,wBAD7CvhB,EAAE,8BAA6B,CAAI,aAAY77B,EAAEo9C,CAAU,CAAA,CAAC,aAAa,IAAI,CAAA,MACrBvhB,EAAE,4BAA4B,C,GAFxFnN,EAAA0P,EAAAwiB,CAAC,C,oCATHI,EAAAjhD,MAAAC,EAAA8/B,CAAK,CAAA,CAAC,YAAU9/B,EAAI8/B,CAAK,CAAA,CAAC,YAAY,KAAM,GAAesd,EAAW,UAAU,CAAA,E,mCAiBjE,IAAAze,EAAA5+B,MAAA87B,EAAE,gBAAgB,CAAA,EAASmF,EAAAjhC,MAAA87B,EAAE,qBAAqB,CAAA,EAArEqH,EAAO4Q,EAAA,C,yEACL4B,GAAQtX,EAAA,C,uCAAQ,OAAA2S,C,aAAgB,OAAA/wC,EAAA8/B,CAAK,CAAA,CAAC,Q,EAAoB,SAAAuH,E,yCAGzC,IAAA1I,EAAA5+B,MAAA87B,EAAE,mBAAmB,CAAA,EAASmF,EAAAjhC,MAAA87B,EAAE,wBAAwB,CAAA,EAA3EqH,EAAO+d,EAAA,C,yEACLvM,GAAWtW,EAAA,C,uCAAQ,OAAA2S,C,aAAgB,OAAA/wC,EAAA8/B,CAAK,CAAA,CAAC,W,EAAuB,SAAAuH,E,6DAG/C,IAAA1I,EAAA5+B,MAAA87B,EAAE,gBAAgB,CAAA,EAASmF,EAAAjhC,MAAAC,EAAA8/B,CAAK,CAAA,CAAC,UAAYjE,EAAE,qBAAqB,EAAIA,EAAE,wBAAwB,CAAA,EAArHqH,EAAOke,EAAA,C,gGAEH,IAAArO,EAAMh0C,GAAA,EAANwiD,EAAAnhD,EAAA2yC,EAAM,EAAA,EAA8D9jB,EAAA,GAAA5uB,EAAAkhD,EAAA5iB,CAAA,EAAA,KAAA9C,EAAE,sBAAsB,CAAA,CAAA,EAA5FxM,EAAA,QAAA0jB,EAA4D9yC,EAAK,EAAjEyuB,EAAA0P,EAAA2U,CAAM,C,QAEN,IAAAyO,EAAMziD,GAAA,EAAN0iD,EAAArhD,EAAAohD,EAAM,EAAA,EAA+DvyB,EAAA,GAAA5uB,EAAAohD,EAAA9iB,CAAA,EAAA,KAAA9C,EAAE,cAAc,CAAA,CAAA,EAArFxM,EAAA,QAAAmyB,EAA4DzD,EAAM,EAAlErvB,EAAA0P,EAAAojB,CAAM,C,UAHJxhD,EAAA8/B,CAAK,CAAA,CAAC,UAASF,EAAA0hB,CAAA,EAAA1hB,EAAA+J,EAAA,EAAA,C,gDAOF,IAAAhL,EAAA5+B,MAAA87B,EAAE,qBAAqB,CAAA,EAA1CqH,EAAOwe,EAAA,C,yEAEH,IAAAG,EAAG7iD,GAAA,EACDg6C,EAAIx4C,EADNqhD,CAAG,EACDC,EAAA1hD,EAAA44C,EAAI,EAAA,EACJ+I,EAAIxhD,EADJy4C,EAAI,CAAA,EACJgJ,EAAA5hD,EAAA2hD,EAAI,EAAA,EACJE,EAAG1hD,EADHwhD,EAAI,CAAA,EAEFG,EAAM1hD,EADRyhD,CAAG,EACDE,EAAA/hD,EAAA8hD,EAAM,EAAA,EACNE,EAAM7hD,EADN2hD,EAAM,CAAA,EACNG,EAAAjiD,EAAAgiD,EAAM,EAAA,EAFRlwB,EAAA+vB,CAAG,EAHL/vB,EAAA2vB,CAAG,E,gDACiChmB,EAAE,qBAAqB,MACtCA,EAAE,qBAAoB,CAAI,MAAK77B,EAAE8/B,CAAK,CAAA,CAAC,oBAAoB,CAAA,MAEhBjE,EAAE,gBAAgB,MAE5EA,EAAE,4BAA4B,C,GAFhCxM,EAAA,QAAA6yB,EAAiDxE,EAAQ,EACzDruB,EAAA,QAAA+yB,EAAuE/D,EAAO,EALlF3vB,EAAA0P,EAAAyjB,CAAG,C,UADD7hD,EAAA8/B,CAAK,CAAA,CAAC,YAAUF,EAAAgiB,CAAA,C,gBAadxvB,EAAAkwB,EAAA,OAAAhE,GAAa,QAAM,EAAKiE,KAAKviD,EAAM8/B,CAAK,CAAA,CAACyiB,EAAK,GAAA,CAAOC,GAAUvrB,EAAMunB,KAAQgE,GAAM,EAAA,IAAA,C,wBAA9B,IAAAA,MAAOxiD,EAAAyiD,CAAA,CAAA,CAAA,GAAGxrB,MAAKj3B,EAAAyiD,CAAA,CAAA,CAAA,GAACjE,MAAMx+C,EAAAyiD,CAAA,CAAA,CAAA,GAC/E,IAAAC,EAAGzjD,GAAA,EACD0jD,EAAIniD,EADNkiD,CAAG,EACDE,EAAAxiD,EAAAuiD,EAAI,EAAA,EACJE,EAAMtiD,EADNoiD,EAAI,CAAA,EACJG,EAAA1iD,EAAAyiD,EAAM,EAAA,EAFR3wB,EAAAwwB,CAAG,E,MACiCvxB,EAAAyxB,EAAA3rB,EAAI,CAAA,E,QAEpC,KAAA4E,EAAE,iBAAgB,CAAI,KAAM2iB,EAAK,CAAA,CAAA,CAAA,C,EADnCnvB,EAAA,QAAAwzB,MAA6EtE,GAAQiE,EAAM,EAAEvrB,EAAI,EAAEunB,EAAK,CAAA,CAAA,EAF1G9vB,EAAA0P,EAAAskB,CAAG,C,sBASH,IAAAO,EAAC/jD,GAAA,EAADgkD,EAAA9iD,EAAA6iD,EAAC,EAAA,EAA6Bh0B,EAAA,GAAA5uB,EAAA6iD,EAAAvkB,CAAA,EAAA,KAAA9C,EAAE,qBAAqB,CAAA,CAAA,EAArDnN,EAAA0P,EAAA6kB,CAAC,C,UADE,CAAAjjD,EAAA8/B,CAAK,CAAA,CAAC,YAAU,CAAA9/B,EAAK8/B,CAAK,CAAA,CAAC,mBAAiB,CAAA9/B,EAAK8/B,CAAK,CAAA,CAAC,kBAAgBF,EAAAojB,CAAA,C,gDAK3D,IAAArkB,EAAA5+B,MAAA87B,EAAE,gBAAgB,CAAA,EAArCqH,EAAOigB,EAAA,C,wEAEH,IAAAI,EAACrkD,GAAA,EAADskD,EAAApjD,EAAAmjD,EAAC,EAAA,EAA6Bt0B,EAAA,GAAA5uB,EAAAmjD,EAAA7kB,CAAA,EAAA,KAAA9C,EAAE,mBAAmB,CAAA,CAAA,EAAnDnN,EAAA0P,EAAAmlB,CAAC,C,QAED,IAAAxV,EAAEvuC,GAAA,EAAF4yB,EAAA2b,EAAE,OAAA/tC,EACM8/B,CAAK,CAAA,CAAC,SAAY,GAASoe,EAAQ,IAAE,EAAnB,IAAO,CAC7B,IAAAlQ,EAAEzuC,GAAA,EACAkkD,EAAGjjD,EADLwtC,CAAE,EAEE0V,EAAIljD,EADNijD,CAAG,EACDE,EAAAvjD,EAAAsjD,EAAI,EAAA,EACJE,EAAIrjD,EADJmjD,EAAI,CAAA,EACJG,EAAArjD,EAAAojD,CAAI,E,MAEA,IAAAG,EAAI3kD,GAAA,EAAJ4kD,EAAA5jD,EAAA2jD,EAAI,EAAA,EAAuC90B,EAAA,GAAA5uB,EAAA2jD,EAAArlB,CAAA,EAAA,KAAA9C,EAAE,iBAAiB,CAAA,CAAA,EAA9DnN,EAAA0P,EAAA2lB,CAAI,C,UADF/jD,EAAAk+C,CAAO,CAAA,CAAC,cAAYte,EAAAkkB,CAAA,C,sBAItB,IAAAK,EAAI9kD,GAAA,EAAJ+kD,EAAAhkD,EAAA+jD,EAAI,EAAA,EAAqCl1B,MAAA5uB,EAAA+jD,EAAApkD,EAAAk+C,CAAO,CAAA,CAAC,aAAa,CAAA,EAA9DxvB,EAAA0P,EAAA+lB,CAAI,C,UADFnkD,EAAAk+C,CAAO,CAAA,CAAC,eAAate,EAAAskB,CAAA,C,GAGzB,IAAAG,EAAM9jD,EAAA0jD,EAAA,CAAA,EAANK,EAAAlkD,EAAAikD,EAAM,EAAA,EAPRnyB,EAAA0xB,CAAI,EAFN1xB,EAAAuxB,CAAG,EAAH,IAAAc,EAAAhkD,EAAAkjD,EAAG,CAAA,E,MAgBD,IAAAgB,EAAInlD,GAAA,EAAJolD,EAAAtkD,EAAAqkD,EAAI,EAAA,E,iBACF5oB,EAAE,mBAAkB,CAAI,WAAU77B,EAAEk+C,CAAO,CAAA,CAAC,WAAW,YAAW,CAAA,CAAG,WAAW,IAAK,GAAG,C,KAD1FxvB,EAAA0P,EAAAqmB,CAAI,C,UADFzkD,EAAAk+C,CAAO,CAAA,CAAC,YAAUte,EAAA4kB,CAAA,C,GAMtB,IAAAG,EAAGpkD,EAAAgkD,EAAA,CAAA,EACDK,EAAIpkD,EADNmkD,CAAG,EACDE,EAAAzkD,EAAAwkD,EAAI,EAAA,EACJE,EAAIvkD,EADJqkD,EAAI,CAAA,EACJG,EAAA3kD,EAAA0kD,EAAI,EAAA,EAFN5yB,EAAAyyB,CAAG,EAtBLzyB,EAAA8b,CAAE,E,YAEoC7c,EAAAwyB,EAAA3jD,EAAAk+C,CAAO,CAAA,CAAC,KAAK,E,2BAS3CriB,EAAE,cAAc,MAYI77B,EAAAk+C,CAAO,CAAA,CAAC,QAAUriB,EAAE,iBAAiB,MACvDA,EAAE,kBAAiB,CAAI,KAAMwG,GAAKriC,EAACk+C,CAAO,CAAA,CAAC,WAAYriB,EAAE,aAAa,CAAA,CAAA,CAAA,C,GAd1ExM,EAAA,QAAAg1B,MAAoEpG,GAAaj+C,EAACk+C,CAAO,CAAA,CAAA,EAV/FxvB,EAAA0P,EAAA4P,CAAE,C,GAFN9b,EAAA6b,CAAE,EAAFrf,EAAA0P,EAAA2P,CAAE,C,UAHA/tC,EAAA8/B,CAAK,CAAA,CAAC,SAAS,SAAW,EAACF,EAAA0jB,CAAA,EAAA1jB,EAAAmZ,EAAA,EAAA,C,gDAqCd,IAAApa,EAAA5+B,MAAA87B,EAAE,iBAAiB,CAAA,EAASmF,EAAAjhC,MAAAC,EAAA88C,CAAQ,EAAGjhB,EAAE,0BAA0B,EAAI,IAAI,EAA9FqH,EAAO8hB,EAAA,C,yEACLhN,GAAQ5Z,EAAA,C,uCAAQ,OAAA2S,C,cAAW,OAAA/wC,EAAA8/B,CAAK,C,EAAY,SAAAuH,E,yCAG3B,IAAA1I,EAAA5+B,MAAA87B,EAAE,cAAc,CAAA,EAASmF,EAAAjhC,MAAA87B,EAAE,mBAAmB,CAAA,EAAjEqH,EAAO+hB,EAAA,C,yEACLvL,GAAMtb,EAAA,C,uCAAQ,OAAA2S,C,aAAgB,OAAA/wC,EAAA8/B,CAAK,CAAA,CAAC,M,EAAkB,SAAAuH,E,0CAGxDnE,EAAO9E,EAAA,CACI,QAAO,GAAA,C,CACc,IAAAO,EAAA5+B,MAAA,mBAAAC,EAAA8/B,CAAK,CAAA,CAAC,MAAI,EAAtCvB,GAAIH,EAAA,C,kFAAoEnP,EAAA,GAAA5uB,EAAA8kD,EAAAxmB,CAAA,EAAA,KAAA9C,EAAE,oBAAoB,CAAA,CAAA,E,mDAG1C,IAAA8C,EAAA5+B,MAAA87B,EAAE,mBAAmB,CAAA,EAA3E4a,GAAMrY,EAAA,C,aAAS,OAAAp+B,EAAA8/B,CAAK,CAAA,CAAC,M,EAAmB,UAAA,G,yBAA6C,MAAA,G,6EAGpE,IAAAnB,EAAA5+B,MAAA87B,EAAE,eAAe,CAAA,EAApCqH,EAAOoiB,EAAA,C,4DACLE,EAAGrlD,EAAAolD,CAAA,EAAHnzB,EAAAozB,EAAG,OACKlJ,GAAM,CAAKxtB,EAAKgQ,KAAQhQ,GAAG,EAAA,IAAA,C,wBAAhB,IAAAA,MAAI9uB,EAAAylD,CAAA,CAAA,CAAA,GAAC3mB,MAAM9+B,EAAAylD,CAAA,CAAA,CAAA,GAC1B/W,EAAKtQ,EAAA,C,YAAE,OAAAU,EAAK,C,EAAE,IAAA,OAAU,CAAE,OAAA9+B,EAAA08C,CAAK,CAAA,CAAC5tB,EAAG,E,EAArB,IAAA,MAAU,EAAA,CAAE,EAAA4tB,CAAK,CAAA,CAAC5tB,EAAG,GAAAyZ,C,MAFvCrW,EAAAszB,CAAG,EAMH,IAAAxP,EAAOz1C,EANPilD,EAAG,CAAA,EAODE,EAAOllD,EADTw1C,CAAO,EACL2P,EAAAvlD,EAAAslD,EAAO,EAAA,EACPE,EAAGrlD,EADHmlD,EAAO,CAAA,EACPtzB,EAAAwzB,EAAG,OACKrJ,GAAI,CAAKztB,EAAKgQ,KAAQhQ,GAAG,EAAA,IAAA,C,wBAAhB,IAAAA,MAAI9uB,EAAA6lD,CAAA,CAAA,CAAA,GAAC/mB,MAAM9+B,EAAA6lD,CAAA,CAAA,CAAA,GACxBnX,EAAKtQ,EAAA,C,YAAE,OAAAU,EAAK,C,EAAE,IAAA,OAAU,CAAE,OAAA9+B,EAAA08C,CAAK,CAAA,CAAC5tB,EAAG,E,EAArB,IAAA,MAAU,EAAA,CAAE,EAAA4tB,CAAK,CAAA,CAAC5tB,EAAG,GAAAyZ,C,MAFvCrW,EAAA0zB,CAAG,EAFL1zB,EAAA8jB,CAAO,EASP,IAAA8P,EAAMvlD,EATNy1C,EAAO,CAAA,EASP+P,EAAA3lD,EAAA0lD,EAAM,EAAA,E,YATN,EAAO,KAAAnnB,E,oBAAoB4d,EAAK,MAAI,CAAGztB,KAAG9uB,EAAM08C,CAAK,CAAA,CAAC5tB,EAAG,MAC9C+M,EAAE,mBAAmB,MAS9BA,EAAE,oBAAoB,C,GADxBxM,EAAA,QAAAy2B,EAAwEtI,EAAW,E,6CAKlE,IAAA7e,EAAA5+B,MAAA87B,EAAE,aAAa,CAAA,EAASmF,EAAAjhC,MAAA87B,EAAE,kBAAkB,CAAA,EAA/DqH,EAAO8iB,EAAA,C,oFACLE,EAAG/lD,EAAA8lD,CAAA,EAAH7zB,EAAA8zB,EAAG,OAAA,CACM,QAAS,YAAa,UAAU,CAAA,CAAE,OAAQ,GAAKlmD,EAAK8/B,CAAK,CAAA,CAAC,QAAQ9F,EAAK,EAAM,GAAOA,GAAK,EAAZ,IAAK,CACvF,IAAAmsB,EAAGzmD,GAAA,EACD0mD,EAAA5lD,EADF2lD,CAAG,E,MASD,IAAAE,EAAI9lD,EARJ6lD,EAAA,CAAA,EAQAE,EAAAlmD,EAAAimD,EAAI,EAAA,EATNn0B,EAAAi0B,CAAG,E,MACDv1B,EAAAw1B,EAAA,MAAA,GAAApmD,EACS8/B,CAAK,CAAA,CAAC,QAAQ9F,GAAK,UAAA,EAD5B,EAAA15B,GAAA8lD,EAAA,EAAA,kCAAA,KAAAnY,EAAA,CAAA,MAMcjU,IAAU,OAAO,CAAA,E,QAEZ,KAAA6B,EAAC,gBAAiB7B,GAAK,CAAA,C,EAT5CtL,EAAA0P,EAAA+nB,CAAG,C,GAFPj0B,EAAAg0B,CAAG,EAgBH,IAAAK,EAAGhmD,EAhBH2lD,EAAG,CAAA,EAiBD9c,EAAK5oC,EADP+lD,CAAG,E,MACD,IAAAE,EAAAjmD,EAAA4oC,CAAK,EAEHY,EAAAzpC,EAAAkmD,CAAA,EAFFv0B,EAAAkX,CAAK,EAAL,IAAAsd,EAAAnmD,EAAA6oC,EAAK,CAAA,E,MAYH,IAAAwd,EAAMjnD,GAAA,EAANknD,EAAAzmD,EAAAwmD,EAAM,EAAA,EAAmE33B,EAAA,GAAA5uB,EAAAwmD,EAAAloB,CAAA,EAAA,KAAA9C,EAAE,oBAAoB,CAAA,CAAA,EAA/FxM,EAAA,QAAAu3B,EAA2DxI,EAAW,EAAtE1vB,EAAA0P,EAAAwoB,CAAM,C,UADJ5mD,EAAA8/B,CAAK,CAAA,CAAC,eAAaF,EAAA+mB,CAAA,C,sBAKrB,IAAAK,EAAIzoD,GAAA,EAAJ0oD,EAAA7mD,EAAA4mD,EAAI,EAAA,EAAe/3B,EAAA,GAAA5uB,EAAA4mD,EAAAtoB,CAAA,EAAA,KAAA9C,EAAE,iBAAiB,CAAA,CAAA,EAAtCnN,EAAA0P,EAAA4oB,CAAI,C,UADFhnD,EAAA68C,CAAS,GAAAjd,EAAAmnB,CAAA,C,GAhBf70B,EAAAq0B,CAAG,E,MACD,EAAAjmD,GAAA8oC,EAAK,EAAA,aAAA,KAAAod,EAAA,CAAA,eAAAxmD,EAAwC68C,CAAS,CAAA,CAAA,E,iBAEpD,EAAA,SAAA78C,EAIW68C,CAAS,C,OALpB78C,EAAA8/B,CAAK,CAAA,CAAC,cAAgBjE,EAAE,oBAAoB,EAAIA,EAAE,oBAAoB,C,GACtExM,EAAA,SAAA2a,EAKWmU,EAAM,E,6CAcJ,IAAAxf,EAAA5+B,MAAA87B,EAAE,cAAc,CAAA,EAASmF,EAAAjhC,MAAAC,EAAA88C,CAAQ,EAAGjhB,EAAE,gBAAgB,EAAIA,EAAE,mBAAmB,CAAA,EAAlGqH,EAAOgkB,EAAA,C,gGAEH,IAAAI,EAAGnL,GAAA,EAAHoL,EAAA/mD,EAAA8mD,CAAG,E,MAEC,IAAAG,EAAMvL,GAAA,EAANwL,EAAAtnD,EAAAqnD,EAAM,EAAA,E,iBACJ5rB,EAAE,gBAAe,CAAI,WAAU77B,EAAE8/B,CAAK,CAAA,CAAC,UAAU,CAAA,C,GADnDzQ,EAAA,QAAAo4B,EAAyEhJ,EAAO,EAAhF/vB,EAAA0P,EAAAqpB,CAAM,C,UADHznD,EAAA8/B,CAAK,CAAA,CAAC,aAAWF,EAAA4nB,CAAA,C,GAKtB,IAAAG,EAAMpnD,EAAAgnD,EAAA,CAAA,EAANK,EAAAxnD,EAAAunD,EAAM,EAAA,EANRz1B,EAAAo1B,CAAG,E,iBAOCzrB,EAAE,eAAc,CAAI,WAAU77B,EAAE8/B,CAAK,CAAA,CAAC,UAAU,CAAA,C,GADlDzQ,EAAA,QAAAs4B,EAAuE9Z,EAAM,EAN/Enf,EAAA0P,EAAAkpB,CAAG,C,UADAtnD,EAAA88C,CAAQ,GAAAld,EAAAynB,CAAA,C,mDAnNbzxB,EAAI,IAAK,SAAQgK,EAAAigB,EAAA,EA2DZjqB,EAAI,IAAK,UAASgK,EAAAshB,GAAA,CAAA,EAkFlBtrB,EAAI,IAAK,WAAUgK,EAAAslB,GAAA,CAAA,EAAAtlB,EAAAwlB,GAAA,EAAA,C,GA9I9BlzB,EAAA0tB,EAAG,E,2DAtGH5/C,EAAA8mC,CAAO,GAAA,CAAA9mC,EAAK8/B,CAAK,EAAAF,EAAAP,EAAA,EAAAr/B,EAEX8/B,CAAK,EAAAF,EAAA8e,GAAA,EAAA,EAAA9e,EAAAgE,GAAA,CAAA,C,cAJR,C,gKCrWR,SAAAmkB,GAAA,EAAA,EAAA,CAMC,IAAAC,EAAElnD,GAAA,EAAFsxB,EAAA41B,EAAE,OAAA7pB,EAAA,MAAA,CACgB,OAAM,QAAO,UAAQ8pB,GAAI,EAAA,IAAA,CAAzB,IAAAA,MAAKlnD,EAAA0+B,CAAA,CAAA,CAAL,KAAM9M,MAAM5xB,EAAA0+B,CAAA,CAAA,CAAN,MAAOyoB,MAAKnnD,EAAA0+B,CAAA,CAAA,CAAL,K,WAC3B0oB,EAAEnnD,EAAAo+B,CAAA,EAAF/L,EAAApyB,EAAAknD,EAAE,EAAA,EACFC,EAAElnD,EADFinD,EAAE,CAAA,EACFtnB,EAAA5/B,EAAAmnD,EAAE,EAAA,E,OADqBj3B,EAAAkC,EAAA40B,EAAI,CAAA,EAC3B51B,GAAA+1B,EAAE,EAAA,8BAAoCF,EAAI,EAAG,8BAAgC,IAAE,EAC7E/2B,EAAA0P,EAAAlO,EAAK,GAAA,GAAQ,C,YAJnBT,EAAA81B,CAAE,EAAFt5B,EAAA0P,EAAA4pB,CAAE,CAFK,C,kxBCJR,SAAAc,GAAA,EAAA,EAAA,C,QAcE,IAmBM/X,EAAW5P,GAAc,EAE3BpB,EAASl+B,EAAO,IAAI,EACpBknD,EAASlnD,EAAMC,EAAA,CAAA,CAAA,CAAA,EACfglC,EAAUjlC,EAAO,EAAI,EAEzB,eAAewlC,GAAO,CACpBrX,EAAA8W,EAAU,EAAI,EAEd,GAAI,CACF,IAAMQ,EAAO,MAAKnJ,EAAA,IAAK,MAAM;;;;;;;;;;;;;;;;;IAAK,CAAI,GAAEA,EAAA,EAAA,CAAA,EAExCnO,EAAA+P,EAASuH,EAAK,OAAM,EAAA,EACpBtX,EAAA+4B,EAASzhB,EAAK,OAAM,EAAA,CACtB,OAASjG,EAAQ,CACf0P,EAAS,MAAM1P,CAAM,CACvB,QAAU,CACRrR,EAAA8W,EAAU,EAAK,CACjB,CACF,CAEAO,EAAI,EAEJ,eAAe6Q,EAAI,EAAU,EAAQ,EAAW,KAAM,EAChD,IAAa,QAAQjQ,CAAQ,IAO7B,MALe8I,EAAS,YAAO5S,EAAA,IACvB,MAAK,4BAA6B+J,EAAQ,+BAAA,CAAmC,GAAE/J,EAAA,EAAA,CAAA,EACzFmD,CAAM,GAGE,MAAM+F,EAAI,CACtB,CAEA,IAAMiR,MACJJ,EACE,cACArc,EAAE,iBAAgB,CAAI,MAAK95B,EAAEg+B,CAAM,CAAA,CAAC,KAAK,CAAA,EACzClE,EAAE,wBAAuB,CAAI,MAAK95B,EAAEg+B,CAAM,CAAA,CAAC,KAAK,CAAA,CAAA,EAG9CwY,MAAgBL,EAAI,gBAAiBrc,EAAE,mBAAkB,CAAI,MAAK95B,EAAEg+B,CAAM,CAAA,CAAC,KAAK,CAAA,CAAA,EAEhFipB,MACJ9Q,EACE,gBACArc,EAAE,oBAAmB,CAAI,MAAK95B,EAAEg+B,CAAM,CAAA,CAAC,KAAK,CAAA,EAC5ClE,EAAE,2BAA0B,CAAI,MAAK95B,EAAEg+B,CAAM,CAAA,CAAC,KAAK,CAAA,CAAA,EAGjDkpB,EAAKjnD,MAAAD,EACTg+B,CAAA,E,CAEQ,CAAA,KAAMlE,EAAE,mBAAmB,EAAG,MAAK95B,EAAEg+B,CAAM,CAAA,CAAC,QAAQ,E,CACpD,KAAMlE,EAAE,yBAAyB,EAAG,MAAK95B,EAAEg+B,CAAM,CAAA,CAAC,UAAW,KAAM,E,GACnE,KAAMlE,EAAE,yBAAyB,EAAG,MAAK95B,EAAEg+B,CAAM,CAAA,CAAC,UAAW,KAAM,E,GACnE,KAAMlE,EAAE,yBAAyB,EAAG,MAAOsG,GAAGpgC,EAACg+B,CAAM,CAAA,CAAC,SAAS,C,GAC/D,KAAMlE,EAAE,wBAAwB,EAAG,MAAOuG,GAAMrgC,EAACg+B,CAAM,CAAA,CAAC,UAAU,C,8BAO3ElB,GAAOT,EAAA,CAAA,CAAA,C,QAEP,IAAAJ,EAAG78B,GAAA,EAAHkyB,EAAAlxB,EAAA67B,EAAG,EAAA,EACD/O,EAAA,GAAA7sB,EAAAixB,EAAAsL,CAAA,EAAA,KAAAoS,EAAS,MAAM,SAAWlV,EAAE,gBAAgB,CAAA,CAAA,EAD9CnN,EAAA0P,EAAAJ,CAAG,C,SAOM,IAAAW,EAAA38B,OAAA,CAAA,GAAI,kBAAmB,MAAO65B,EAAE,aAAa,CAAA,EAAA,EAC/CmF,EAAAh/B,MAAAD,EAAAg+B,CAAM,CAAA,CAAC,UACTlE,EAAE,sBAAqB,CAAI,IAAKsG,GAAGpgC,EAACg+B,CAAM,CAAA,CAAC,SAAS,CAAA,CAAA,EACpDlE,EAAE,mBAAkB,CAAI,KAAMwG,GAAKtgC,EAACg+B,CAAM,CAAA,CAAC,UAAU,CAAA,CAAA,CAAA,EAN1DuP,GAAAlR,EAAA,C,YACQ,OAAAr8B,EAAAg+B,CAAM,CAAA,CAAC,K,WACV,OAAAh+B,EAAAg+B,CAAM,CAAA,CAAC,E,qFAMViP,GAAOrL,EAAA,C,eAAW,OAAAoN,EAAS,K,IAE3B,IAAArN,EAAGrhC,EAAAshC,EAAA,CAAA,EAAHI,EAAAzhC,EAAAohC,CAAG,E,CACc,IAAA/E,EAAA38B,MAAA65B,EAAE,aAAa,CAAA,EAA9BqH,EAAOa,EAAA,C,4DACLgkB,GAAK/jB,EAAA,C,WAAO,OAAAjiC,EAAAknD,CAAK,C,IAEjB,IAAAplB,EAAGxhC,EAAA2hC,EAAA,CAAA,EAAHE,EAAA5hC,EAAAuhC,CAAG,E,MAEC,IAAAjD,EAAMv/B,GAAA,EAANw/B,EAAA1+B,EAAAy+B,EAAM,EAAA,EAAqD3R,EAAA,GAAA7sB,EAAAy+B,EAAAlC,CAAA,EAAA,KAAA9C,EAAE,4BAA4B,CAAA,CAAA,EAAzFxM,EAAA,QAAAuR,EAAiDooB,CAAO,EAAxDt6B,EAAA0P,EAAAwC,CAAM,C,UADJ7+B,EAAAg+B,CAAM,CAAA,CAAC,SAAS,QAAMH,EAAAqE,CAAA,C,sBAKxB,IAAAnD,EAAMz/B,GAAA,EAAN0/B,EAAA5+B,EAAA2+B,EAAM,EAAA,EAAqD7R,EAAA,GAAA7sB,EAAA2+B,EAAApC,CAAA,EAAA,KAAA9C,EAAE,gBAAgB,CAAA,CAAA,EAA7ExM,EAAA,QAAAyR,EAAiDyX,CAAO,EAAxD7pB,EAAA0P,EAAA0C,CAAM,C,QAEN,IAAA8H,EAAMtnC,GAAA,EAANmnC,EAAAtmC,EAAAymC,EAAM,EAAA,EACJ3Z,EAAA,GAAA7sB,EAAAqmC,EAAA9J,CAAA,EAAA,KAAA9C,EAAE,cAAc,CAAA,CAAA,EADlBxM,EAAA,QAAAuZ,EAAuE0P,CAAK,EAA5E5pB,EAAA0P,EAAAwK,CAAM,C,UAHJ7mC,EAAAg+B,CAAM,CAAA,CAAC,UAASH,EAAAuE,CAAA,EAAAvE,EAAAwF,EAAA,EAAA,C,GALtBlT,EAAA2R,CAAG,E,+BAeL,IAAAO,EAAG/hC,EAAA0hC,EAAA,CAAA,EAAHQ,EAAAjiC,EAAA8hC,CAAG,E,CACc,IAAAzF,EAAA38B,MAAA65B,EAAE,YAAY,CAAA,EAA7BqH,EAAOqB,EAAA,C,iEAEH,IAAAtG,EAACz8B,GAAA,EAADmnC,EAAAxmC,EAAA87B,EAAC,EAAA,EAA6BhP,EAAA,GAAA7sB,EAAAumC,EAAAhK,CAAA,EAAA,KAAA9C,EAAE,eAAe,CAAA,CAAA,EAA/CnN,EAAA0P,EAAAH,CAAC,C,QAED,IAAA8P,EAAErsC,GAAA,EAAF0wB,EAAA2b,EAAE,OAAAhsC,EACMg+B,CAAM,CAAA,CAAC,OAAU,GAAOD,EAAM,MAAI,EAAjB,IAAK,CAC1B,IAAAkO,EAAEvsC,GAAA,EAAFyoC,EAAA5nC,EAAA0rC,CAAE,E,CACoB,IAAArP,EAAA38B,MAAA,WAAAD,EAAA+9B,CAAK,CAAA,CAAC,MAAI,EAA9BvB,GAAI2L,EAAA,C,iGACFjb,MAAA7sB,EAAAymC,EAAA9mC,EAAA+9B,CAAK,CAAA,CAAC,UAAU,CAAA,E,+BAFpB5N,EAAA8b,CAAE,EAAFtf,EAAA0P,EAAA4P,CAAE,C,GAFN9b,EAAA6b,CAAE,EAAFrf,EAAA0P,EAAA2P,CAAE,C,UAHAhsC,EAAAg+B,CAAM,CAAA,CAAC,OAAO,SAAW,EAACH,EAAA6D,CAAA,EAAA7D,EAAA+J,EAAA,EAAA,C,gDAejB,IAAAhL,EAAA38B,MAAA65B,EAAE,sBAAsB,CAAA,EAAvCqH,EAAOmH,EAAA,C,iEAEH,IAAAvB,EAACtnC,GAAA,EAADunC,EAAA5mC,EAAA2mC,EAAC,EAAA,EAA6B7Z,EAAA,GAAA7sB,EAAA2mC,EAAApK,CAAA,EAAA,KAAA9C,EAAE,oBAAoB,CAAA,CAAA,EAApDnN,EAAA0P,EAAA0K,CAAC,C,QAED,IAAAqF,EAAEzsC,GAAA,EAAF0wB,EAAA+b,EAAE,OAAApsC,EACMg+B,CAAM,CAAA,CAAC,SAAY,GAASoY,EAAQ,IAAE,EAAnB,IAAO,CAC9B,IAAAjK,EAAEvsC,GAAA,EACA2iC,EAAGhiC,EADL4rC,CAAE,EACAlD,EAAA1oC,EAAAgiC,CAAG,E,CAEe,IAAA3F,EAAA38B,MAAA,WAAAD,EAAAo2C,CAAO,CAAA,CAAC,MAAM,MAAI,EADlC5Z,GAAAyM,EAAA,C,iGAIE/b,MAAA7sB,EAAA6mC,EAAAlnC,EAAAo2C,CAAO,CAAA,CAAC,MAAM,UAAU,CAAA,E,+BAE1B,IAAApZ,EAAI18B,EAAA2oC,EAAA,CAAA,EAAJ7B,EAAAhnC,EAAA48B,EAAI,EAAA,EAPN7M,EAAAoS,CAAG,EAUH,IAAA4G,EAAG7oC,EAVHiiC,EAAG,CAAA,EAWD5E,EAAIp9B,EADN4oC,CAAG,EACD5B,EAAAnnC,EAAAu9B,EAAI,EAAA,EAGJ6K,EAAIloC,EAHJq9B,EAAI,CAAA,EAGJ8J,EAAArnC,EAAAooC,EAAI,EAAA,EAJNrY,EAAAgZ,CAAG,EAXLhZ,EAAAgc,CAAE,E,YAQ6C/c,EAAAgY,EAAApnC,EAAAo2C,CAAO,CAAA,CAAC,WAAa,GAAG,EAInEvnB,EAAA8O,EAAI,QAAAf,CAAA,E,oBAAQyD,GAAMrgC,EAACo2C,CAAO,CAAA,CAAC,eAAe,MACxCtc,EAAE,mBAAkB,CAAI,KAAMwG,GAAKtgC,EAACo2C,CAAO,CAAA,CAAC,eAAe,CAAA,CAAA,MAEvDtc,EAAE,iBAAgB,CAAI,KAAMsG,GAAGpgC,EAACo2C,CAAO,CAAA,CAAC,SAAS,CAAA,CAAA,C,GAf3DzpB,EAAA0P,EAAA8P,CAAE,C,GAFNhc,EAAAic,CAAE,EAAFzf,EAAA0P,EAAA+P,CAAE,C,UAHApsC,EAAAg+B,CAAM,CAAA,CAAC,SAAS,SAAW,EAACH,EAAA8J,CAAA,EAAA9J,EAAAmZ,EAAA,EAAA,C,gDA4BnB,IAAApa,EAAA38B,MAAA65B,EAAE,iBAAiB,CAAA,EAAlCqH,EAAOmI,EAAA,C,2CACkB,IAAA1M,EAAA38B,MAAA65B,EAAE,oBAAoB,CAAA,EAA7C4a,GAAMrY,EAAA,C,aAAE,OAAAr8B,EAAAgnD,CAAM,C,sDA/ClB72B,EAAAkS,CAAG,EAnBLlS,EAAAwR,CAAG,E,yCAjBH3hC,EAAA+kC,CAAO,GAAA,CAAA/kC,EAAKg+B,CAAM,EAAAH,EAAAP,CAAA,EAAAt9B,EAEZg+B,CAAM,EAAAH,EAAAwlB,EAAA,EAAA,EAAAxlB,EAAAgE,EAAA,CAAA,C,aAJT,C,iFC9FR,SAAAylB,GAAA,EAAA,EAAA,C,QAGE,IAAIC,EAAsB1mD,EAAAu7B,EAAA,QAAA,EAAG,gBAAgB,E,uBAI5C,IAAAwV,EAAGlxC,GAAA,E,OAAHmuB,EAAA+iB,EAAG,MAAAxV,EAAA,OAAa,OAAO,EAAvB9L,GAAAshB,EAAG,EAAA,YAA8C2V,EAAK,GAAA,IAAA,C,GAAtD56B,EAAA0P,EAAAuV,CAAG,C,QAEH,IAAA5U,EAAIp8B,GAAA,EAAJ0wB,EAAAtwB,EAAAg8B,EAAI,EAAA,E,MAAJ1M,GAAA0M,EAAI,EAAA,8DAAoEuqB,EAAK,GAAA,IAAA,E,QAC1E,KAAAv3B,EAAOoM,EAAA,OAAQ,IAAI,CAAA,C,EADtBzP,EAAA0P,EAAAW,CAAI,C,UAHKZ,EAAA,OAAA,QAAOyB,EAAAP,CAAA,EAAAO,EAAAwF,EAAA,EAAA,C,aAFX,C,6LCJR,SAAAskB,GAAA,EAAA,EAAA,C,QACE,IAAI5qB,EAAO17B,EAAA+6B,EAAA,QAAA,EAAG,IAAI,EAA4B4O,EAAQ3pC,EAAA+6B,EAAA,WAAA,EAAG,EAAK,EAAElH,EAAI7zB,EAAA+6B,EAAA,OAAA,EAAG,IAAI,EAG5E,IAAAuK,EAAKvlC,GAAA,EAAL+6B,EAAA76B,EAAAqlC,CAAK,E,MACQ,IAAA3J,EAAI/7B,GAAA,EAAJ69B,EAAAv9B,EAAAy7B,EAAI,EAAA,EAAsB9P,MAAA1rB,EAAAs9B,EAAA/B,EAAK,CAAA,CAAA,EAA/BpQ,EAAA0P,EAAAW,CAAI,C,UAAXD,EAAK,GAAAc,EAAAP,CAAA,C,GAET,IAAAsqB,EAAAnmD,EAAA06B,EAAA,CAAA,EAAA9L,EAAAu3B,EAAA,OAAAxrB,EAAA,SAAA,CAOoBrP,EAAKuE,EAAMu2B,EAAM,MAAQ96B,GAAG,EAAA,IAAA,C,wBAA5B,IAAAA,MAAInrB,EAAA67B,CAAA,CAAA,CAAA,GAACnM,MAAK1vB,EAAA67B,CAAA,CAAA,CAAA,GAACoqB,EAAIhmD,MAAAC,EAAAF,EAAA67B,CAAA,CAAA,CAAA,GAAE,EAAM,CAAA,EACvC,IAAAqqB,EAAM3mD,GAAA,EAAN69B,EAAAz9B,EAAAumD,EAAM,EAAA,E,YAAN,EAAM,SAAAlmD,EAAuBimD,CAAG,EAAGz4B,EAAA4P,EAAA1N,EAAI,CAAA,EAAzBy2B,KAAA,EAAAh7B,EAAG,KAAjB,EAAM,OAAN,EAAM,QAAAg7B,IAAA,G,GAANp7B,EAAA0P,EAAAyrB,CAAM,C,GARV33B,EAAAy3B,CAAA,E,MAAA74B,EAAA64B,CAAA,EAHFz3B,EAAAwW,CAAK,E,OAGH,EAAA,SAGEqE,EAAQ,EAHVnc,EAAA+4B,EAAA,aAIa7qB,EAAK,EAAG,KAAO7H,EAAI,CAAA,E,kBAJhC,EAAA,OAAA,EAAA,QAAA8yB,IAAA,GAAAjmD,EAAA6lD,EAAAI,CAAA,E,GAAA16B,EAAA,SAAAs6B,EAKY,GAAKxrB,EAAA,SAAcxO,EAAM,cAAc,KAAK,CAAA,EAR1DjB,EAAA0P,EAAAsK,CAAK,E,GAFE,C,mJCFR,SAAAuhB,GAAA,EAAA,EAAA,C,QACE,IAAIC,EAAShmD,EAAAi6B,EAAA,UAAA,GAAa,EAAK,EAAUgsB,EAAQjmD,EAAAi6B,EAAA,WAAA,EAAG,IAAI,EAGzD,IAAAuK,EAAK1kC,GAAA,EACH6gC,EAAA1gC,EADFukC,CAAK,EACHjY,EAAAoU,CAAA,EAAA,IAAAxR,EAAAjvB,EAAAygC,CAAA,EADF3S,EAAAwW,CAAK,E,8BACHrZ,EAAA,SAAAwV,EAAA,SAAA,GAAAC,EAAA,EAIWqlB,EAAQ,EAAI,GAAUA,EAAQ,CAAA,CAACx6B,EAAM,cAAc,OAAO,EAAI,IAAA,GAAA,EAAS,MAAA,KAAAmV,CAAA,C,GAJlFjT,EAAAgT,EAAAqlB,CAAA,EADFx7B,EAAA0P,EAAAsK,CAAK,E,GAFE,C,qsFCFR,SAAAyiB,GAAA,EAAA,EAAA,C,QAuBE,IAAMta,EAAQ5Q,GAAW,EAwCnBmrB,EAAK,CACR,CAAA,UAAS,CAAG,oBAAoB,CAAA,EAChC,CAAA,MAAK,CAAG,qBAAsB,eAAe,CAAA,EAC7C,CAAA,OAAM,CAAA,CAAA,EACN,CAAA,SAAQ,CAAA,CAAA,C,EAWLxkB,EAAO,CACX/K,EAAE,sBAAsB,EACtB,CAAA,MAAOA,EAAE,2BAA2B,EAAG,KAAM,EAAI,EACjD,CAAA,MAAOA,EAAE,4BAA4B,EAAG,KAAM,EAAI,C,EAGhDkV,EAAW5P,GAAc,EAE3B8P,EAAS1rC,EAAO,EAAK,EACrB+6B,EAAO/6B,EAAO,EAAK,EACnB2sC,EAAU3sC,EAAO,IAAI,EACrBysC,EAAYzsC,EAAMC,EAAA,CAAA,CAAA,CAAA,EAClB6lD,EAAU9lD,EAAMC,EAAA,CAAA,CAAA,CAAA,EAChBk3C,EAAQn3C,EAAMC,EAAC8lD,EAAK,CAAA,CAAA,EAExB,SAASA,GAAQ,CACf,MAAM,CACJ,KAAM,GACN,KAAM,UACN,UAAW,GACX,UAAW,GACX,OAAM,CAAA,EACN,SAAU,GACV,SAAU,GACV,YAAa,GACb,OAAQ,GACR,eAAgB,GAChB,OAAQ,GACR,QAAS,GACT,KAAM,E,CAEV,CAEA,IAAMpkB,EAAMzhC,MAAAC,EAAY2lD,CAAO,CAAA,CAAC,KAAM,GAAWE,EAAO,MAAG7lD,EAAKg3C,CAAK,CAAA,CAAC,MAAM,CAAA,EAEtE8O,EAAS,GACbn4B,EACG,MAAM;CAAI,CAAA,CACV,IAAK,GAAQuJ,EAAI,KAAI,CAAA,CAAA,CACrB,OAAO,OAAO,EAEnB,eAAeoQ,GAAO,CAMpB,GALAhd,EAAA0sB,EAAQ4O,EAAK,EAAA,EAAA,EACbt7B,EAAAkiB,EAAU,IAAI,EACdliB,EAAAihB,EAAS,EAAI,EACbF,EAAS,MAAK,EAEZrrC,EAAEssC,CAAS,CAAA,CAAC,OAAQ,OAEtB,IAAM1K,EAAO,MAAMyJ,EAAS,YAAO5S,EAAA,IAC7B,MAAM,qEAAqE,CAAA,EAG5EmJ,IAELtX,EAAAgiB,EAAY1K,EAAK,gBAAe,EAAA,EAChCtX,EAAAq7B,EAAU/jB,EAAK,WAAU,EAAA,EAC3B,CAEA,eAAemkB,GAAe,CAC5B,IAAMnkB,EAAO,MAAMyJ,EAAS,YAAO5S,EAAA,IAC7B,M;;WAIA,CAAA,IAAGz4B,EAAEg3C,CAAK,CAAA,CAAC,QAAQ,C,GAIzB,GAAE,CAAGpV,EAAM,OAEX,IAAMokB,EAAOpkB,EAAK,4BAElB,EAAAoV,CAAK,CAAA,CAAC,SAAWgP,EAAK,UAAQhmD,EAAIg3C,CAAK,CAAA,CAAC,SACxC,EAAAA,CAAK,CAAA,CAAC,UAAYgP,EAAK,QAAQ,KAAK;CAAI,GAAAhmD,EAAKg3C,CAAK,CAAA,CAAC,UACnD,EAAAA,CAAK,CAAA,CAAC,YAAcgP,EAAK,aAAWhmD,EAAIg3C,CAAK,CAAA,CAAC,YAC9C,EAAAA,CAAK,CAAA,CAAC,OAASgP,EAAK,QAAMhmD,EAAIg3C,CAAK,CAAA,CAAC,OACpC,EAAAA,CAAK,CAAA,CAAC,eAAiBgP,EAAK,cAC9B,CAEA,SAASx3B,GAAU,CA6BjB,OA5BExuB,EAAEg3C,CAAK,CAAA,CAAC,OAAS,SACX,CACJ;;;;;;I,CAEE,OAAMh3C,EAAEg3C,CAAK,CAAA,CAAC,OACd,QAAOh3C,EAAEg3C,CAAK,CAAA,CAAC,QAAQ,KAAI,EAC3B,KAAIh3C,EAAEg3C,CAAK,CAAA,CAAC,KAAK,KAAI,GAAM,KAC3B,KAAIh3C,EAAEg3C,CAAK,CAAA,CAAC,KAAK,KAAI,GAAM,I,EAE7B,Q,EAIFh3C,EAAEg3C,CAAK,CAAA,CAAC,OAAS,OACX,CACJ;;;;;;;;;;;;I,CAEE,KAAIh3C,EAAEg3C,CAAK,CAAA,CAAC,KAAK,KAAI,EACrB,SAAQh3C,EAAEg3C,CAAK,CAAA,CAAC,SAAS,KAAI,EAC7B,QAAS8O,EAAK9lD,EAACg3C,CAAK,CAAA,CAAC,SAAS,EAC9B,YAAWh3C,EAAEg3C,CAAK,CAAA,CAAC,YAAY,KAAI,GAAM,KACzC,eAAch3C,EAAEg3C,CAAK,CAAA,CAAC,eACtB,OAAMh3C,EAAEg3C,CAAK,CAAA,CAAC,OAAO,KAAI,GAAM,I,EAEjC,uB,EAIE,CACJ;;;;;;;;;;;;I,CAEE,KAAIh3C,EAAEg3C,CAAK,CAAA,CAAC,KAAK,KAAI,EACrB,WAAY0O,EAAM,MAAI,CAAGt8B,KAASA,IAAGppB,EAAKg3C,CAAK,CAAA,CAAC,IAAI,CAAA,CAAE,GACtD,aAAYh3C,EAAEg3C,CAAK,CAAA,CAAC,OAAS,MAAQ8O,EAAK9lD,EAACg3C,CAAK,CAAA,CAAC,SAAS,EAAA,CAAA,EAC1D,UAAW8O,EAAK9lD,EAACg3C,CAAK,CAAA,CAAC,SAAS,EAChC,cAAah3C,EAAEg3C,CAAK,CAAA,CAAC,M,EAEvB,c,CAEJ,CAEA,eAAepK,GAAO,CACpB,GAAM,CAACpa,EAAU4E,EAAWhO,GAAOoF,EAAO,EAE1ClE,EAAAsQ,EAAO,EAAI,EAEX,IAAMgH,EAAO,MAAMyJ,EAAS,YAAO5S,EAAA,IAAW,MAAMjG,EAAU4E,CAAS,CAAA,EAEvE9M,EAAAsQ,EAAO,EAAK,EAEPgH,IAELtX,EAAAkiB,EAAU5K,EAAKxY,GAAG,EAAA,EAClBkB,EAAAihB,EAAS,EAAK,EAEdU,GAAK,EACP,CAEA,IAAI3K,EAASzhC,EAAO,EAAE,EAClBm0B,EAAQn0B,EAAO,EAAE,EACjBomD,EAAWpmD,EAAO,EAAK,EACvBqmD,EAAUrmD,EAAMC,EAAA,CAAA,CAAA,CAAA,EAChBshC,EAAUvhC,EAAO,EAAI,EACzB,eAAe8hC,GAAO,CACpBrX,EAAA8W,EAAU,EAAI,EAEd,IAAMQ,EAAO,MAAMyJ,EAAS,YAAO5S,EAAA,IAC7B,MAAM;;;;;;;;IAAK,CACb,OAAMz4B,EAAEg0B,CAAK,GAAI,KACjB,SAAQh0B,EAARimD,CAAQ,EACR,QAAS9a,EAAM,OACf,MAAOA,EAAM,I,IAIjB7gB,EAAA8W,EAAU,EAAK,EAEVQ,IAELtX,EAAA47B,EAAUtkB,EAAK,QAAO,EAAA,EACtBuJ,EAAM,QAAQvJ,EAAK,WAAW,EAChC,CAEA,SAAS6K,GAAK,EAAW,CACnBC,IAAc,UAAWvB,EAAM,QAAOnrC,EAACkmD,CAAO,CAAA,CAAC,GAAE,EAAG,CAAA,EAAG,QAAQ,EAC9D/a,EAAM,KAAI,EAEfxJ,EAAI,CACN,CAEAA,EAAI,EAEJ,SAASsK,IAAQ,CACfd,EAAM,MAAK,EACXxJ,EAAI,CACN,CAEA,SAASE,IAAO,CACdvX,EAAA0J,EAAKh0B,EAAGshC,CAAM,EAAA,EAAA,EACd2K,GAAK,CACP,CAEA,SAASjK,EAAO,EAAM,CACpB1X,EAAA27B,EAAW31B,EAAI,EAAA,EACf2b,GAAK,CACP,CAGA,IAAMtJ,EAAO5iC,MAAAC,EACXg0B,CAAA,EACImC,EAAEn2B,EAAAimD,CAAQ,EAAG,iCAAmC,wBAA2B,CAAA,MAAKjmD,EAALg0B,CAAK,CAAA,C,EAChFh0B,EAAAimD,CAAA,EACE9vB,EAAE,wBAAwB,EAC1BA,EAAE,oBAAoB,CAAA,E,CAKpB,IAAAyM,EAAO,GAAA,C,mBACwB,IAAA3J,EAAAl5B,MAAAo2B,EAAE,kBAAkB,CAAA,EAA1DouB,GAAM/rB,EAAA,C,yBAAiE,SAAAwJ,EAAhE,IAAA,SAAY,CAAE,OAAAhiC,EAAAimD,CAAQ,C,EAAtB,IAAA,QAAY,EAAA,CAAE37B,EAAA27B,EAAQpjB,EAAA,EAAA,C,kBAGrB,IAAA5J,EAAAl5B,MAAAo2B,EAAE,gBAAgB,CAAA,EACZmF,EAAAv7B,MAAAo2B,EAAE,4BAA4B,CAAA,EAH5C+I,GAAAjB,EAAA,C,wDAIW,SAAA4D,GAHV,IAAA,OAAU,CAAE,OAAA7hC,EAAAshC,CAAM,C,EAAlB,IAAA,MAAU,EAAA,CAAEhX,EAAAgX,EAAMuB,EAAA,EAAA,C,IAKnB,IAAA3H,EAAMh7B,EAAA+9B,EAAA,CAAA,EAAN9C,EAAAh7B,EAAA+6B,EAAM,EAAA,EAA8D3R,EAAA,GAAAnpB,EAAA+6B,EAAAlC,CAAA,EAAA,KAAA9C,EAAE,aAAa,CAAA,CAAA,EAAnFxM,EAAA,QAAAuR,EAA6DoM,CAAI,E,QATzDrO,EAAAl5B,MAAAo2B,EAAE,eAAe,CAAA,EAA7ByT,GAAIlR,EAAA,C,yBACO,U,mCAWT4Q,GAAOjL,EAAA,C,eAAW,OAAAgN,EAAS,K,wBAGV,IAAApS,EAAAl5B,MAAAo2B,EAAE,aAAa,CAAA,EAA9BqH,EAAO9E,EAAA,C,6DACQ,IAAAO,EAAAl5B,MAAAo2B,EAAE,cAAc,CAAA,EAAwCmF,EAAAv7B,MAAAo2B,EAAE,0BAA0B,CAAA,EAAjG6S,EAAKxK,EAAA,C,wDAA2B,IAAA,OAAU,CAAE,OAAAx+B,EAAAg3C,CAAK,CAAA,CAAC,I,EAAlB,IAAA,MAAU,EAAA,CAAE,EAAAA,CAAK,CAAA,CAAC,KAAInU,C,IAEtD,IAAAvK,EAAGp4B,EAAAs+B,EAAA,CAAA,EAAH9R,EAAA4L,EAAG,OACKotB,GAAK,CAAKt8B,KAAMA,GAAG,EAAA,IAAA,C,wBAAT,IAAAA,MAAIppB,EAAA85B,CAAA,CAAA,CAAA,GAClB,IAAAsB,EAAMr8B,GAAA,EAANs8B,EAAAl7B,EAAAi7B,EAAM,EAAA,E,MAANlQ,EAAAkQ,EAAM,eAAAp7B,EAA6Bg3C,CAAK,CAAA,CAAC,OAAS5tB,EAAG,CAAA,E,QACnD,KAAA+M,EAAC,iBAAkB/M,EAAG,GAAA,CAAA,C,EADxBO,EAAA,QAAAyR,MAAM,EAAiE4b,CAAK,CAAA,CAAC,KAAO5tB,EAAG,CAAA,EAAvFJ,EAAA0P,EAAA0C,CAAM,C,GAFV5O,EAAA8L,CAAG,EAAH,IAAAqG,EAAAz+B,EAAAo4B,EAAG,CAAA,E,yBAUO,IAAAW,EAAAl5B,MAAAo2B,EAAE,aAAa,CAAA,E,SAEX,CAAA,GAAIA,EAAE,gBAAgB,CAAA,EAAO,GAAAn2B,EAAA2lD,CAAO,CAAA,CAAC,IAAK,GAAM,CAAME,EAAO,IAAKA,EAAO,IAAI,CAAA,C,GAHzF7B,GAAAnlB,EAAA,C,qCAEQ,OAAA7+B,EAAAg3C,CAAK,CAAA,CAAC,M,6BAEF,SAAA,GAAQ,CACjB,EAAAA,CAAK,CAAA,CAAC,OAAS5tB,EACf,EAAA4tB,CAAK,CAAA,CAAC,KAAIh3C,EAAG2lD,CAAO,CAAA,CAAC,KAAM,GAAWE,EAAO,MAAQz8B,CAAG,CAAA,EAAG,MAAM,MAAQ,EAC3E,C,iBAGY,IAAA6P,EAAAl5B,MAAAo2B,EAAE,iBAAiB,CAAA,EAAhC6S,EAAK7E,EAAA,C,mEAA8B,IAAA,OAAU,CAAE,OAAAnkC,EAAAg3C,CAAK,CAAA,CAAC,O,EAAlB,IAAA,MAAU,EAAA,CAAE,EAAAA,CAAK,CAAA,CAAC,QAAOnU,C,wBAG7C,IAAA5J,EAAAl5B,MAAAo2B,EAAE,cAAc,CAAA,EAA7B6S,EAAKtQ,EAAA,C,2CAAgE,OAAA14B,EAAAwhC,CAAM,CAAA,CAAC,KAAK,I,EAAjD,IAAA,OAAU,CAAE,OAAAxhC,EAAAg3C,CAAK,CAAA,CAAC,I,EAAlB,IAAA,MAAU,EAAA,CAAE,EAAAA,CAAK,CAAA,CAAC,KAAInU,C,cADpD7iC,EAAAwhC,CAAM,CAAA,EAAE,MAAM,MAAItH,EAAAP,CAAA,C,mBAbpB35B,EAAAg3C,CAAK,CAAA,CAAC,OAAS,UAAQ9c,EAAAgE,CAAA,C,GAkB3B,IAAA3F,EAACr4B,EAAAy+B,EAAA,CAAA,EAADoE,EAAA5iC,EAAAo4B,EAAC,EAAA,EAADoM,EAAAzkC,EAAAq4B,EAAC,CAAA,E,iBAWCa,EAAKn5B,EAAAktC,CAAA,EACH9T,EAAI/4B,EADN84B,CAAK,EACH6J,EAAA9iC,EAAAk5B,EAAI,EAAA,EACJyT,EAAA5sC,EADAm5B,EAAI,CAAA,EACJnN,GAAA4gB,CAAA,EAFFtgB,EAAA4M,CAAK,EAUL,IAAA8J,EAAAhjC,EAVAk5B,EAAK,CAAA,EAUL+J,EAAAhjC,EAAA+iC,EAAA,EAAA,EAAAgC,EAAAhlC,EAAAgjC,EAAA,CAAA,E,CASa,IAAAjK,EAAAl5B,MAAAo2B,EAAE,mBAAmB,CAAA,EAAlC6S,EAAK9D,EAAA,C,qEAAgC,IAAA,OAAU,CAAE,OAAAllC,EAAAg3C,CAAK,CAAA,CAAC,Q,EAAlB,IAAA,MAAU,EAAA,CAAE,EAAAA,CAAK,CAAA,CAAC,SAAQnU,C,IAE/D,IAAAG,EAAK9iC,EAAAglC,EAAA,CAAA,EACHlL,EAAI15B,EADN0iC,CAAK,EACHK,EAAAljC,EAAA65B,EAAI,EAAA,EACJmsB,EAAAjmD,EADA85B,EAAI,CAAA,EACJ9N,GAAAi6B,CAAA,EAFF35B,EAAAwW,CAAK,EAWL,IAAAU,EAAKxjC,EAXL8iC,EAAK,CAAA,EAYH6B,EAAIvkC,EADNojC,CAAK,EACHH,EAAApjC,EAAA0kC,EAAI,EAAA,EACJuhB,EAAAlmD,EADA2kC,EAAI,CAAA,EACJ3Y,GAAAk6B,CAAA,EAFF55B,EAAAkX,CAAK,EAAL,IAAA4B,EAAAplC,EAAAwjC,EAAK,CAAA,E,CAUQ,IAAAzK,EAAAl5B,MAAAo2B,EAAE,iBAAiB,CAAA,EAAhC6S,EAAK1D,EAAA,C,yEAA8B,IAAA,OAAU,CAAE,OAAAtlC,EAAAg3C,CAAK,CAAA,CAAC,M,EAAlB,IAAA,MAAU,EAAA,CAAE,EAAAA,CAAK,CAAA,CAAC,OAAMnU,C,kBAET,IAAA5J,EAAAl5B,MAAAo2B,EAAE,yBAAyB,CAAA,EAA7EouB,GAAM5e,EAAA,C,yBAAC,IAAA,SAAY,CAAE,OAAA3lC,EAAAg3C,CAAK,CAAA,CAAC,c,EAApB,IAAA,QAAY,EAAA,CAAE,EAAAA,CAAK,CAAA,CAAC,eAAcnU,C,2BAlCzC,EAAA,SAAAvH,E,2BAT4BnF,EAAE,kBAAkB,MAYpC,CAAAn2B,EAAAg3C,CAAK,CAAA,CAAC,SAAS,KAAI,MAG7B7gB,EAAE,cAAc,MAMUA,EAAE,aAAa,MAWfA,EAAE,qBAAqB,C,GA/BjDzK,EAAAohB,MAAA9sC,EAKag3C,CAAK,CAAA,CAAC,SAAQ,GAAA,EAAdA,CAAK,CAAA,CAAC,SAAQnU,CAAA,EAG7BlZ,EAAA,QAAAuZ,EAIU6iB,CAAY,EASpBr6B,EAAAy6B,MAAAnmD,EAKag3C,CAAK,CAAA,CAAC,UAAS,GAAA,EAAfA,CAAK,CAAA,CAAC,UAASnU,CAAA,EAM5BnX,EAAA06B,MAAApmD,EAIag3C,CAAK,CAAA,CAAC,YAAW,GAAA,EAAjBA,CAAK,CAAA,CAAC,YAAWnU,CAAA,E,gBAvC9B7iC,EAAAg3C,CAAK,CAAA,CAAC,OAAS,QAAM9c,EAAAqE,CAAA,C,sBAiDvB,IAAA8nB,EAAKnnD,GAAA,EACH8lC,EAAI1kC,EADN+lD,CAAK,EACH5iB,EAAAtjC,EAAA6kC,EAAI,EAAA,EACJshB,EAAApmD,EADA8kC,EAAI,CAAA,EACJ9Y,GAAAo6B,CAAA,EAFF95B,EAAA65B,CAAK,EACuB98B,EAAA,GAAAnpB,EAAAqjC,EAAAxK,CAAA,EAAA,KAAA9C,EAAE,uBAAuB,CAAA,CAAA,EACnDzK,EAAA46B,MAAAtmD,EAOag3C,CAAK,CAAA,CAAC,UAAS,GAAA,EAAfA,CAAK,CAAA,CAAC,UAASnU,CAAA,EAT9B7Z,EAAA0P,EAAA2tB,CAAK,C,UADHrmD,EAAAg3C,CAAK,CAAA,CAAC,OAAS,OAAK9c,EAAAuE,CAAA,C,iCAgBxB8nB,EAAKtmD,EAAA6lC,CAAA,EACHV,EAAI9kC,EADNimD,CAAK,EACH3iB,EAAAzjC,EAAAilC,EAAI,EAAA,EACJohB,EAAAtmD,EADAklC,EAAI,CAAA,EACJlZ,GAAAs6B,CAAA,EAFFh6B,EAAA+5B,CAAK,EAaL,IAAAvoB,EAAG99B,EAbHqmD,EAAK,CAAA,EAcHrgB,EAAI5lC,EADN09B,CAAG,EACD8F,EAAA3jC,EAAA+lC,EAAI,EAAA,EACJiB,GADAjnC,EAAAgmC,EAAI,CACJ,EAAA,C,YACQ,OAAAlmC,EAAAg3C,CAAK,CAAA,CAAC,M,kBACF,OAAAh3C,EAAAssC,CAAS,C,EACT,SAAA,GAAM,EAAM0K,CAAK,CAAA,CAAC,OAASxV,C,GALzChV,EAAAwR,CAAG,E,yBAZyB,KAAA7H,EAAE,mBAAmB,MAa1BA,EAAE,gBAAgB,CAAA,C,EAZvCzK,EAAA86B,MAAAxmD,EAOag3C,CAAK,CAAA,CAAC,UAAS,GAAA,EAAfA,CAAK,CAAA,CAAC,UAASnU,CAAA,E,gBAV1B7iC,EAAAg3C,CAAK,CAAA,CAAC,OAAS,QAAM9c,EAAA6D,CAAA,C,GAwBzB,IAAAI,EAAGj+B,EAAAqtC,EAAA,CAAA,EACD/J,EAAAljC,EADF69B,CAAG,EACD4F,EAAA5jC,EAAAqjC,EAAA,EAAA,EAWAK,EAAM3jC,EAXNsjC,EAAA,CAAA,EAWAiB,EAAAtkC,EAAA0jC,EAAM,EAAA,EAZRrX,EAAA2R,CAAG,E,gBA3HHjT,EAAAoN,EAAG,aAAAW,CAAA,E,OA4HD,EAAA,SAAAsC,E,oBA5HyCpF,EAAE,cAAc,MA2BzDn2B,EAAAg3C,CAAK,CAAA,CAAC,OAAS,SACZ7gB,EAAE,sBAAsB,EACxBn2B,EAAAg3C,CAAK,CAAA,CAAC,OAAS,UACf7gB,EAAE,uBAAuB,EACzBn2B,EAAAg3C,CAAK,CAAA,CAAC,OAAS,OACb7gB,EAAE,oBAAoB,EACtBA,EAAE,mBAAmB,MA8Ffn2B,EAAA46B,CAAI,IAAA56B,EACXg3C,CAAK,CAAA,CAAC,OAAS,SACX,CAAAh3C,EAAAg3C,CAAK,CAAA,CAAC,QAAM,CAAAh3C,EAAKg3C,CAAK,CAAA,CAAC,QAAQ,KAAI,EACnC,CAAAh3C,EAAAg3C,CAAK,CAAA,CAAC,KAAK,KAAI,GAAAh3C,EAAOg3C,CAAK,CAAA,CAAC,OAAS,QAAM,CAAAh3C,EAAKg3C,CAAK,CAAA,CAAC,SAAS,KAAI,OAGzEh3C,EAAA46B,CAAI,EAAGzE,EAAE,gBAAgB,EAAIA,EAAE,gBAAgB,MAG/CA,EAAE,gBAAgB,C,GAZpBxM,EAAA,QAAA6Z,EAOUoJ,CAAI,EAIdjjB,EAAA,QAAAka,MAAMtjC,EAA4DgrC,EAAS,EAAK,CAAA,E,yCA3IlFvrC,EAAAurC,CAAM,GAAArR,EAAA8J,CAAA,C,uBAmJO,IAAA/K,EAAAl5B,MAAAo2B,EAAE,wBAAuB,CAAI,KAAIn2B,EAAEwsC,CAAO,CAAA,CAAC,OAAO,IAAI,CAAA,CAAA,EAArEhP,EAAO9E,EAAA,C,qDACL0K,EAACnjC,EAAA46C,CAAA,EAADnW,EAAAvkC,EAAAijC,EAAC,EAAA,EAIDqK,EAACvtC,EAJDkjC,EAAC,CAAA,EAID0B,EAAA3kC,EAAAstC,EAAC,EAAA,EAADG,EAAA1tC,EAAAutC,EAAC,CAAA,E,MAGC,IAAAyN,EAAC77C,GAAA,EAAD4lC,EAAA9kC,EAAA+6C,EAAC,EAAA,EAAqD3xB,MAAAnpB,EAAA6kC,EAAAjlC,EAAAwsC,CAAO,CAAA,CAAC,MAAM,CAAA,EAApExjB,EAAA0P,EAAAwiB,CAAC,C,UADCl7C,EAAAwsC,CAAO,CAAA,CAAC,QAAMtS,EAAA0K,CAAA,C,iCAKhB2Y,EAACt9C,EAAAwmD,CAAA,EAADphB,EAAA/kC,EAAAi9C,CAAC,E,wBAEoBvkB,EAAC/4B,EAAAymD,CAAA,EAADjhB,EAAAtlC,EAAA64B,EAAC,EAAA,E,UAAD9N,EAAA8N,EAAC,OAAAh5B,EAAoBwsC,CAAO,CAAA,CAAC,KAAK,E,QAAoC,KAAArW,EAAE,uBAAuB,CAAA,C,kBAA9Gn2B,EAAAwsC,CAAO,CAAA,CAAC,OAAKtS,EAAA6K,CAAA,C,GAFnBvY,EAAA+wB,CAAC,EAKD,IAAA+E,EAAEpiD,EALFq9C,EAAC,CAAA,EAKD7wB,EAAA41B,EAAE,OAAAtiD,EACMwsC,CAAO,CAAA,CAAC,SAAY,GAASma,EAAQ,OAAK,EAAtB,IAAO,C,WAC/BlE,EAAExiD,EAAAw7C,CAAA,EAAF1V,EAAA5lC,EAAAsiD,EAAE,EAAA,EACFC,EAAExiD,EADFuiD,EAAE,CAAA,EACFxc,EAAA9lC,EAAAuiD,EAAE,EAAA,E,OADuCj3B,EAAAsa,EAAA/lC,EAAA2mD,CAAO,CAAA,CAAC,KAAK,EACyBl7B,EAAAwa,EAAAjmC,EAAA2mD,CAAO,CAAA,CAAC,KAAK,C,YAHhGn6B,EAAA81B,CAAE,E,2BAJAnsB,EAAE,2BAA0B,CAAI,KAAIn2B,EAAEwsC,CAAO,CAAA,CAAC,OAAO,IAAI,CAAA,C,mBAFzDxsC,EAAAwsC,CAAO,CAAA,CAAC,UAAQtS,EAAAiL,CAAA,C,iBAcC,IAAAlM,EAAAl5B,MAAA,YAAAC,EAAAwsC,CAAO,CAAA,CAAC,OAAO,UAAQ,EAA5C3T,GAAIuV,EAAA,C,mFAA2E7kB,EAAA,GAAAnpB,EAAA+lC,EAAAlN,CAAA,EAAA,KAAA9C,EAAE,sBAAsB,CAAA,CAAA,E,4CApBjD1K,EAAAqZ,EAAA9kC,EAAAwsC,CAAO,CAAA,CAAC,OAAO,QAAQ,C,OAH3ErW,EAACn2B,EAACwsC,CAAO,CAAA,CAAC,OAAS,uCAAyC,2BAA2B,C,4CAHzFxsC,EAAAwsC,CAAO,GAAAtS,EAAAqL,CAAA,C,sBA+BTpM,GAAOT,EAAA,CAAA,CAAA,C,0BAEP6G,GAAKmc,EAAA,C,cAAU,OAAAxa,C,cAAgB,OAAAlhC,EAAAkmD,CAAO,CAAA,CAAC,M,cAAe,OAAAlmD,EAAA2iC,CAAO,C,EAClD,KAAI,GAAA,C,iBACLjW,EAAAivB,EAAA,OAAA37C,EAAAkmD,CAAO,EAAI,GAAQlxB,EAAO,UAAQ,EAAvB,IAAM,C,CACD,IAAAiE,EAAAl5B,MAAA,YAAAC,EAAAg1B,CAAM,CAAA,CAAC,UAAQ,EAAnC+J,GAAGrG,EAAA,C,kDACD2L,EAAEpkC,EAAA2mD,CAAA,EACAloB,EAAGp+B,EADL+jC,CAAE,EACA2X,EAAA17C,EAAAo+B,CAAG,EACDilB,GAAU3H,EAAA,C,aAAE,OAAAh8C,EAAAg1B,CAAM,C,4CAClB,IAAA4J,EAAG1+B,EAAA87C,EAAA,CAAA,EACDxW,EAAGllC,EADLs+B,CAAG,EACDqd,EAAA37C,EAAAklC,CAAG,E,CACoB,IAAAvM,EAAAl5B,MAAA,YAAAC,EAAAg1B,CAAM,CAAA,CAAC,UAAQ,EAApC6D,GAAIojB,EAAA,C,kGACF1yB,MAAAnpB,EAAAimC,EAAArmC,EAAAg1B,CAAM,CAAA,CAAC,IAAI,CAAA,E,0DAIVh1B,EAAAg1B,CAAM,CAAA,CAAC,YAAU,CAAK,WAAYmB,EAAE,wBAAwB,EAAG,OAAO,EACtEn2B,EAAAg1B,CAAM,CAAA,CAAC,SAAO,CAAAh1B,EAAKg1B,CAAM,CAAA,CAAC,YAAU,CAAK,UAAWmB,EAAE,uBAAuB,EAAG,MAAM,EACtFn2B,EAAAg1B,CAAM,CAAA,CAAC,SAAOh1B,EAAIg1B,CAAM,CAAA,CAAC,YAAU,CAAK,UAAWmB,EAAE,gCAAgC,EAAG,OAAO,CAC/F,CAAA,CAAA,OAAO,OAAO,CAAA,EALjBqD,GAAAojB,EAAA,C,2BAJFpwB,EAAAgZ,CAAG,EAYH,IAAAK,EAAG3lC,EAZHslC,EAAG,CAAA,EAYHe,EAAApmC,EAAA0lC,EAAG,EAAA,EAbLrZ,EAAAoS,CAAG,EAFLpS,EAAAkS,CAAG,EADLlS,EAAA6X,CAAE,EAoBF,IAAAE,EAAErkC,EApBFmkC,EAAE,CAAA,EAqBA6J,EAAG5tC,EADLikC,CAAE,EACA+J,EAAAnuC,EAAA+tC,EAAG,EAAA,EADL1hB,EAAA+X,CAAE,EAKF,IAAAmB,EAAExlC,EALFqkC,EAAE,CAAA,EAKFkW,EAAAt6C,EAAAulC,EAAE,EAAA,E,YATIxa,EAAA2a,EAAG,QAAA7lC,EAAgDg1B,CAAM,CAAA,CAAC,QAAQ,EAAGvJ,EAAA8a,EAAAvmC,EAAAg1B,CAAM,CAAA,CAAC,QAAQ,EAKxF9J,EAAAgjB,EAAG,QAAAjV,CAAA,E,oBAA8D6D,GAAM98B,EAACg1B,CAAM,CAAA,CAAC,SAAS,MACtF8H,GAAM98B,EAACg1B,CAAM,CAAA,CAAC,SAAS,GAAA,QAG2CyH,GAAGz8B,EAACg1B,CAAM,CAAA,CAAC,SAAS,C,iEAMlG2F,G,KAAK,EAAA,C,YAAE,OAAAwQ,C,cAAc,OAAAnrC,EAAAkmD,CAAO,CAAA,CAAC,M,aAAc,OAAAlmD,EAAAohC,CAAO,C,EAAU,OAAAqL,E,mBAtC1DzsC,EAAAohC,CAAO,GAAAphC,EAAIkmD,CAAO,CAAA,CAAC,SAAW,EAAChsB,EAAA0L,CAAA,EAAA1L,EAAAwF,EAAA,EAAA,C,gDAhM9B,C,aChRR,IAAamnB,GAAgB;;;;EAMvBC,GAAU,CACd,WACA,UACA,WACA,aACA,MACA,cACF,EAEMC,GAAgB,CAAC,OAAQ,OAAQ,OAAQ,UAAU,EAEnDC,GAAW,CAAC,MAAO,WAAY,UAAU,EAEzCC,IAAS,EAAM,EAAO,IAC1Bt1B,EAAK,SAAS1E,CAAK,EAAIkJ,EAAE,gBAAgB8W,EAAM,GAAGhgB,GAAO,EAAIA,EAEzD4a,IAAU,EAAQ,IACtB1Y,GAAQ,OACJA,EAAO,IAAK,GAAU83B,GAAMH,GAAS,UAAW75B,CAAK,CAAC,CAAC,CAAC,KAAK,IAAI,EACjEkJ,EAAE,uBAAuB6a,GAAO,EAEhCkW,GAAO,GACX/wB,EAAElJ,EAAQ,2BAA6B,yBAAyB,EAE5DA,GAAS,GAASkJ,EAAE,uBAAuB5E,GAAM,EAEjD41B,GAAQ,CACZ,CAAC,MAAO,KAAK,EACb,CAAC,KAAM,MAAM,EACb,CAAC,GAAI,QAAQ,CACf,EAEA,SAAgBC,GAAS,EAAS,CAChC,GAAM,CAAC3yB,EAAMoI,GAAQsqB,GAAM,MAAM,CAAC72B,KAAU+2B,EAAU/2B,IAAS,CAAC,GAAK,CACnE,EACA,QACF,EAEA,OAAO6F,EAAE,sBAAsB0G,IAAQ,CAAE,MAAOwqB,EAAU5yB,CAAK,CAAC,CAClE,CAEA,IAAM8tB,GAAQ,GAASpsB,EAAE,sBAAsB5E,GAAM,EAErD,SAAS+1B,GAAe,EAAQ,CAC9B,MAAO,CACL,CAAC/E,GAAK,QAAQ,EAAGgF,EAAO,OAASt6B,GAAM,MAAM,EAAIA,GAAM,iBAAiB,CAAC,EACzE,CAACs1B,GAAK,eAAe,EAAG1a,GAAO0f,EAAO,aAAc,KAAK,CAAC,EAC1D,CACEhF,GAAK,eAAe,EACpBgF,EAAO,YACHpxB,EAAE,2BAA4B,CAAE,KAAMoxB,EAAO,WAAY,CAAC,EAC1Dt6B,GAAM,KAAK,CACjB,EACA,CAACs1B,GAAK,QAAQ,EAAG2E,GAAIK,EAAO,MAAM,CAAC,EACnC,CAAChF,GAAK,UAAU,EAAG0E,GAAMD,GAAU,WAAYO,EAAO,QAAQ,CAAC,EAC/D,CAAChF,GAAK,OAAO,EAAG0E,GAAMD,GAAU,WAAYO,EAAO,KAAK,CAAC,EACzD,CAAChF,GAAK,gBAAgB,EAAG2E,GAAIK,EAAO,aAAa,CAAC,EAClD,CAAChF,GAAK,OAAO,EAAG0E,GAAMD,GAAU,WAAYO,EAAO,KAAK,CAAC,EACzD,CAAChF,GAAK,gBAAgB,EAAG2E,GAAIK,EAAO,aAAa,CAAC,EAClD,CAAChF,GAAK,eAAe,EAAG1a,GAAO0f,EAAO,aAAc,SAAS,CAAC,EAC9D,CACEhF,GAAK,WAAW,EAChBgF,EAAO,YAAc,KACjBt6B,GAAM,WAAW,EACjB4a,GAAO0f,EAAO,UAAW,MAAM,CACrC,EACA,CACEhF,GAAK,UAAU,EACfpsB,EACEoxB,EAAO,sBACH,iCACA,+BACJ,CACE,QAASA,EAAO,eAClB,CACF,CACF,EACA,CAAChF,GAAK,mBAAmB,EAAG2E,GAAIK,EAAO,gBAAgB,CAAC,EACxD,CAAChF,GAAK,gBAAgB,EAAG1a,GAAO0f,EAAO,cAAe,MAAM,CAAC,EAC7D,CAAChF,GAAK,wBAAwB,EAAG2E,GAAIK,EAAO,oBAAoB,CAAC,EACjE,CAAChF,GAAK,4BAA4B,EAAG2E,GAAIK,EAAO,uBAAuB,CAAC,EACxE,CACEhF,GAAK,kBAAkB,EACvBgF,EAAO,gBACHH,GAASG,EAAO,eAAe,EAC/Bt6B,GAAM,kBAAkB,CAC9B,EACA,CAACs1B,GAAK,iBAAiB,EAAG2E,GAAIK,EAAO,uBAAuB,CAAC,EAC7D,CACEhF,GAAK,cAAc,EACnBgF,EAAO,aACHpxB,EAAE,yBAA0B,CAAE,MAAOoxB,EAAO,YAAa,CAAC,EAC1Dt6B,GAAM,OAAO,CACnB,EACA,CACEs1B,GAAK,aAAa,EAClBgF,EAAO,aACHpxB,EAAE,yBAA0B,CAAE,MAAOoxB,EAAO,YAAa,CAAC,EAC1Dt6B,GAAM,OAAO,CACnB,EACA,CACEs1B,GAAK,cAAc,EACnBgF,EAAO,mBACHH,GAASG,EAAO,kBAAkB,EAClCt6B,GAAM,OAAO,CACnB,EACA,CACEs1B,GAAK,cAAc,EACnB0E,GAAMF,GAAe,gBAAiBQ,EAAO,YAAY,CAC3D,EACA,CAAChF,GAAK,eAAe,EAAG1a,GAAO0f,EAAO,aAAc,MAAM,CAAC,CAC7D,CACF,CAEA,SAAgBC,GAAkB,EAAQ,EAAU,CAClD,IAAMC,EAAS,IAAI,IAAIH,GAAet8B,CAAQ,CAAC,EAE/C,OAAOs8B,GAAe9lB,CAAM,CAAC,CAC1B,QAAQ,CAAC+gB,EAAMt1B,KAAWw6B,EAAO,IAAIlF,CAAI,IAAMt1B,CAAK,CAAC,CACrD,KAAK,CAACs1B,EAAMt1B,MAAY,CAAE,OAAM,QAAO,QAASw6B,EAAO,IAAIlF,CAAI,CAAE,EAAE,CACxE,C,gsCChIA,SAAAwF,GAAA,EAAA,EAAA,C,QAME,IAAIC,EAAO/mD,EAAAw3B,EAAA,QAAA,OAAA,CAAA,CAAA,EAELwvB,EAAQ,CAAI,aAAc,aAAc,QAAS,OAAQ,MAAM,CAAA,CAAE,IAAK,GAAG,CAC7E7+B,EACA+M,EAAC,+BAAgC/M,GAAG,CAAA,CAAA,EAGhC8+B,EAAK,CAAI,QAAS,UAAW,WAAY,QAAQ,EAEjDC,EAAW,GACf73B,EAAK,IAAK,IAAI,CACT,GAAA,OAAO,YAAY43B,EAAM,IAAK,GAAI,CAAMv2B,GAAOy2B,EAAKz2B,IAAI,CAAA,EAAA,CAAS,KAAKA,IAAS,QAAU;EAAO,IAAI,C,IACvG,QAASy2B,EAAK,O,IAGdva,EAAO3sC,EAAMC,EAACkpB,MAAc89B,EAAQH,EAAK,CAAA,CAAA,CAAA,CAAA,EAE7C59B,MAAc,CACZE,EAAAujB,EAAOsa,EAAQH,EAAK,CAAA,EAAA,EAAA,CACtB,CAAC,EAED,IAAMK,GAAS,EAAO,IACpBp7B,EACG,MAAM0E,IAAS,QAAU,KAAO,QAAQ,CAAA,CACxC,IAAK,GAAQuF,EAAI,KAAI,CAAA,CAAA,CACrB,OAAO,OAAO,EAEb5G,MAAIlvB,EACRysC,CAAI,CAAA,CAAC,IAAK,IAAG,CACR,GAAA,OAAO,YAAYqa,EAAM,IAAK,GAAI,CAAMv2B,EAAM02B,EAAMzqB,EAAIjM,GAAOA,CAAI,CAAA,CAAA,CAAA,EACtE,QAASiM,EAAI,O,IAGjB,SAASsK,GAAM,C,EACb2F,E,CAAW,GAAAzsC,EAAAysC,CAAI,E,CAAI,MAAO,GAAI,QAAS,GAAI,SAAU,GAAI,OAAQ,GAAI,QAAS,Y,MAChF,CAEA,SAAS1F,EAAO,EAAO,CACrB7d,EAAAujB,EAAIzsC,EAAGysC,CAAI,CAAA,CAAC,QAAQ,EAAG,IAAO1W,IAAOhN,CAAK,EAAA,EAAA,CAC5C,CAEA,SAASm+B,EAAK,EAAO,EAAI,CACvB,IAAM38B,EAAI,CAAA,GAAAvqB,EAAOysC,CAAI,CAAA,EACpB,CAAAliB,EAAKxB,GAAQwB,EAAKxB,EAAQo+B,IAAE,CAAM58B,EAAKxB,EAAQo+B,GAAK58B,EAAKxB,EAAK,EAC/DG,EAAAujB,EAAOliB,EAAI,EAAA,CACb,C,CAGkB,IAAAsN,EAAA53B,MAAA80B,EAAE,0BAA0B,CAAA,EAASmF,EAAAj6B,MAAA80B,EAAE,yBAAyB,CAAA,EAAnFqH,EAAO9E,EAAA,C,iGAEH,IAAA8Y,EAAE1wC,GAAA,EAAF4rB,EAAA8kB,EAAE,OAAApwC,EACMysC,CAAI,EAAAtsC,GAAA,EAAI,EAAG,IAAA,CACf,IAAA+mC,EAAEznC,GAAA,EACAy3B,EAAG92B,EADL8mC,CAAE,EAEEjP,EAAI73B,EADN82B,CAAG,EACD3K,EAAAlsB,EAAA43B,EAAI,EAAA,EACJ2E,EAAGt8B,EADH23B,EAAI,CAAA,EAEF6B,EAAM15B,EADRw8B,CAAG,EACD,EAAM,SAAsD7T,IAAU,EAAtE,IAAAgR,EAAA15B,EAAAy5B,EAAM,EAAA,EAGNE,EAAA15B,EAHAw5B,EAAM,CAAA,EAGNG,EAAA55B,EAAA25B,EAAA,EAAA,EAQA8H,EAAMxhC,EARN05B,EAAA,CAAA,EAQA2H,EAAAthC,EAAAyhC,EAAM,EAAA,EAZR1W,EAAAwR,CAAG,EAFLxR,EAAA8L,CAAG,EAoBH,IAAAc,EAAK13B,EApBL42B,EAAG,CAAA,EAqBD0B,EAAIx4B,EADN43B,CAAK,EACH6J,EAAAxhC,EAAAu4B,EAAI,EAAA,EACJ8S,EAAAprC,EADAs4B,EAAI,CAAA,EACJ9N,GAAA4gB,CAAA,EAOA,IAAAjI,EAAInjC,EAPJorC,EAAA,CAAA,EAOA3J,EAAA1hC,EAAAojC,EAAI,EAAA,EATNrY,EAAA4M,CAAK,EAYL,IAAA+E,EAAGz8B,EAZH03B,EAAK,CAAA,EAYL1M,EAAAyR,EAAG,OAAA,CACM,UAAW,WAAY,QAAQ,EAAK,GAAMxM,GAAI,EAAV,IAAI,CAC7C,IAAAqR,EAAKriC,GAAA,EACHqkC,EAAIxjC,EADNwhC,CAAK,EACHK,EAAA5hC,EAAAujC,EAAI,EAAA,EACJ7F,EAAAz9B,EADAsjC,EAAI,CAAA,EACJja,EAAAoU,CAAA,EAOA,IAAAiG,EAAI1jC,EAPJy9B,EAAA,CAAA,EAOAoE,EAAA9hC,EAAA2jC,EAAI,EAAA,EATN5Y,EAAAwW,CAAK,E,8BACuB7M,EAAC,sBAAuBxE,GAAI,MAQnCwE,EAAC,sBAAuBxE,EAAI,MAAA,C,GAP/CjG,EAAAyT,MAAA/9B,EAKaw8B,CAAG,CAAA,CAACjM,GAAI,GAAA,EAARiM,CAAG,CAAA,CAACjM,GAAIkR,CAAA,EAPvB7Z,EAAA0P,EAAAsK,CAAK,C,GAFTxW,EAAA2R,CAAG,EAAH,IAAAF,EAAAv8B,EAAAy8B,EAAG,CAAA,E,CAiBK,IAAAlF,EAAA53B,MAAA80B,EAAE,4BAA4B,CAAA,EADtC6tB,GAAA/lB,EAAA,C,qCAEQ,OAAA78B,EAAAw8B,CAAG,CAAA,CAAC,O,gBACF,OAAAqqB,C,EACE,SAAA,GAAO,EAAMrqB,CAAG,CAAA,CAAC,QAAUuE,C,GArDzC3V,EAAA8b,CAAE,E,gCAOI,EAAA,SAGWne,IAAK/oB,EAAKysC,CAAI,CAAA,CAAC,OAAS,E,kCARX1X,EAAE,0BAAyB,CAAI,OAAQhM,EAAQ,CAAC,CAAA,MAGtEgM,EAAE,uBAAuB,MAQzBA,EAAE,yBAAyB,MAG3BA,EAAE,2BAA2B,MAMPA,EAAE,0BAA0B,MAQnCA,EAAE,+BAA+B,C,GA1BlDxM,EAAA,QAAAuR,MAAwFotB,EAAKn+B,EAAK,EAAI,CAAA,EAGtGR,EAAA,QAAAyR,MAIgBktB,EAAKn+B,EAAO,CAAC,CAAA,EAI7BR,EAAA,QAAAuZ,MAAiEiF,EAAOhe,CAAK,CAAA,EAQ/EuB,EAAAohB,MAAA1rC,EAKaw8B,CAAG,CAAA,CAAC,MAAK,GAAA,EAATA,CAAG,CAAA,CAAC,MAAKiF,CAAA,EA5B1B7Z,EAAA0P,EAAA4P,CAAE,C,GAFN9b,EAAAglB,CAAE,EAAFxoB,EAAA0P,EAAA8Y,CAAE,C,QA6DF,IAAAjZ,EAACx3B,GAAA,EAAD0iC,EAAAhiC,EAAA82B,EAAC,EAAA,EAA6BhP,EAAA,GAAA5nB,EAAA8hC,EAAAxK,CAAA,EAAA,KAAA9C,EAAE,0BAA0B,CAAA,CAAA,EAA1DnN,EAAA0P,EAAAH,CAAC,C,UA9DCn3B,EAAAysC,CAAI,CAAA,CAAC,OAAM3T,EAAAP,CAAA,EAAAO,EAAAwF,EAAA,EAAA,C,GAiEf,IAAA0D,EAAC1hC,EAAA82B,EAAA,CAAA,EAADoL,EAAAniC,EAAA2hC,EAAC,EAAA,EAED1E,EAAGh9B,EAFH0hC,EAAC,CAAA,EAGCI,EAAMhiC,EADRk9B,CAAG,EACDoF,EAAAriC,EAAA+hC,EAAM,EAAA,EACNK,EAAMniC,EADN8hC,EAAM,CAAA,EACNO,EAAAtiC,EAAAoiC,EAAM,EAAA,EAFRrX,EAAAkS,CAAG,E,uCAFavI,EAAE,0BAA0B,MAGaA,EAAE,wBAAwB,MAE/EA,EAAE,yBAAyB,C,GAF7BxM,EAAA,QAAA6Z,EAAiD0E,CAAG,EACpDve,EAAA,QAAAka,MAAMpL,EAAA,OAAoEnI,EAAI,CAAA,CAAA,E,kCAxE3E,C,qZCpDR,SAAAs4B,GAAA,EAAA,EAAA,C,QAUE,IAMMvd,EAAW5P,GAAc,EAE/B,eAAe3G,EAAO,EAAS,CACxB,QAAQqB,EAAE,0BAAyB,CAAI,KAAM0yB,EAAQ,IAAI,CAAA,CAAA,GAO1D,MALexd,EAAS,YAAO5S,EAAA,IACvB,MAAM;;;;IAAQ,CAAI,SAAUowB,EAAQ,QAAQ,CAAA,EACtD1yB,EAAE,mBAAkB,CAAI,KAAM0yB,EAAQ,IAAI,CAAA,CAAA,GAGlC,MAAKpwB,EAAA,UAAA,CACjB,C,CAGc,IAAAQ,EAAA/2B,MAAAi0B,EAAE,gBAAgB,CAAA,EAASmF,EAAAp5B,MAAAi0B,EAAE,eAAe,CAAA,EAA3DqH,EAAO9E,EAAA,C,oFACL4Q,GAAO9Q,EAAA,C,eAAW,OAAA6S,EAAS,K,uBAGzB,IAAAhD,EAAEtmC,GAAA,EAAF2qB,EAAA2b,EAAE,OAAA5P,EAAA,KACc,GAASowB,EAAQ,UAAQ,EAAzB,IAAO,CACnB,IAAAvgB,EAAEzmC,GAAA,EACAy2B,EAAGh2B,EADLgmC,CAAE,EAEEjP,EAAI/2B,EADNg2B,CAAG,EACD+F,EAAA/7B,EAAA+2B,CAAI,E,CACmB,IAAAJ,EAAA/2B,MAAA,YAAAC,EAAA0mD,CAAO,CAAA,CAAC,UAAQ,EAArChwB,GAAIwF,EAAA,C,6EAA8D9U,MAAA/mB,EAAAmrB,EAAAxrB,EAAA0mD,CAAO,CAAA,CAAC,IAAI,CAAA,E,+BADhFr8B,EAAA6M,CAAI,EAGJ,IAAAW,EAAI33B,EAHJg3B,EAAI,CAAA,EAIFwL,EAAIviC,EADN03B,CAAI,EACFmB,EAAA14B,EAAAoiC,EAAI,EAAA,EAAJxJ,EAAAh5B,EAAAwiC,CAAI,EADNrY,EAAAwN,CAAI,EAJNxN,EAAA8L,CAAG,EAWH,IAAA0F,EAAG37B,EAXHi2B,EAAG,CAAA,EAYD4C,EAAM54B,EADR07B,CAAG,EACD+E,EAAAtgC,EAAAy4B,EAAM,EAAA,EADR1O,EAAAwR,CAAG,EAZLxR,EAAA8b,CAAE,E,YAM4B7c,EAAA0P,EAAAh5B,EAAA0mD,CAAO,CAAA,CAAC,QAAQ,E;kB,sBACtC1mD,EAAA0mD,CAAO,CAAA,CAAC,WAAa1yB,EAAE,qBAAoB,CAAI,IAAKsG,GAAGt6B,EAAC0mD,CAAO,CAAA,CAAC,UAAU,CAAA,CAAA,EAAO1yB,EAAE,gBAAgB,MACnGA,EAAE,oBAAmB,CAAI,IAAKsG,GAAGt6B,EAAC0mD,CAAO,CAAA,CAAC,SAAS,CAAA,CAAA,MAMrD1yB,EAAE,iBAAiB,C,GADrBxM,EAAA,QAAAuR,MAA6EpG,EAAM3yB,EAAC0mD,CAAO,CAAA,CAAA,EAb/F7/B,EAAA0P,EAAA4P,CAAE,C,GAFN9b,EAAA6b,CAAE,EAAFrf,EAAA0P,EAAA2P,CAAE,C,QAuBF,IAAA9P,EAACv2B,GAAA,EAADihC,EAAAxgC,EAAA81B,EAAC,EAAA,EAA6BhP,EAAA,GAAA/mB,EAAAygC,EAAAhK,CAAA,EAAA,KAAA9C,EAAE,gBAAgB,CAAA,CAAA,EAAhDnN,EAAA0P,EAAAH,CAAC,C,UAxBME,EAAA,KAAA,OAAMyB,EAAAP,CAAA,EAAAO,EAAAwF,EAAA,EAAA,C,qCALV,C,shBC5BR,SAAA0pB,GAAA,EAAA,EAAA,C,QAUE,IAYM/d,EAAW5P,GAAc,EAC3B+F,EAAMt+B,EAAA,CAAA,CAAA,EAEV,eAAemmD,EAAM,EAAS,CAC5B,IAAMjwB,EAAQoI,EAAOhT,EAAQ,KAAEiK,EAAA,OAAY,GAMvC,MALe4S,EAAS,YAAO5S,EAAA,IACvB,MAAM;;;;IAAK,CAAI,GAAIjK,EAAQ,GAAI,OAAK,CAAA,EAC9C2H,EAAE,0BAAyB,CAAI,WAAY3H,EAAQ,MAAM,WAAY,OAAK,CAAA,CAAA,GAGlE,MAAKiK,EAAA,UAAA,CACjB,CAEA,eAAe6wB,EAAQ,EAAS,CAM1B,MALeje,EAAS,YAAO5S,EAAA,IACvB,MAAM;;;;IAAO,CAAI,GAAIjK,EAAQ,EAAE,CAAA,EACzC2H,EAAE,2BAA0B,CAAI,WAAY3H,EAAQ,MAAM,UAAU,CAAA,CAAA,GAG5D,MAAKiK,EAAA,UAAA,CACjB,C,CAGkB,IAAAQ,EAAA91B,MAAAgzB,EAAE,uBAAuB,CAAA,EAASmF,EAAAn4B,MAAAgzB,EAAE,sBAAsB,CAAA,EAA7EqH,EAAO9E,EAAA,C,2FACL4Q,GAAO9Q,EAAA,C,eAAW,OAAA6S,EAAS,K,uBAGzB,IAAAhD,EAAEtlC,GAAA,EAAF2pB,EAAA2b,EAAE,OAAA5P,EAAA,KACc,GAASjK,EAAQ,IAAE,EAAnB,IAAO,CACnB,IAAA8Z,EAAExlC,GAAA,EACAw1B,EAAG/0B,EADL+kC,CAAE,EAEEjP,EAAI91B,EADN+0B,CAAG,EACD+F,EAAA96B,EAAA81B,CAAI,E,CACkB,IAAAJ,EAAA91B,MAAA,WAAAC,EAAAorB,CAAO,CAAA,CAAC,MAAM,MAAI,EAAtCqK,GAAIwF,EAAA,C,6EAA+D9U,MAAA9lB,EAAAkqB,EAAAvqB,EAAAorB,CAAO,CAAA,CAAC,MAAM,UAAU,CAAA,E,+BAD7FhC,EAAA6M,CAAI,EAGJ,IAAAW,EAAI12B,EAHJ+1B,EAAI,CAAA,EAGJ8B,EAAAz3B,EAAAs2B,EAAI,EAAA,EAJNxN,EAAA8L,CAAG,EAOH,IAAA0F,EAAG16B,EAPHg1B,EAAG,CAAA,EAOHgG,EAAA/6B,EAAAy6B,CAAG,E,MAEC,IAAAimB,EAAAphD,GAAA,EAAA6pB,EAAAu3B,EAAA,OAAAxrB,EAAA,OAMkB,GAAOW,GAAK,EAAZ,IAAK,CACnB,IAAA+qB,EAAMxhD,GAAA,EAAN04B,EAAA33B,EAAAygD,EAAM,EAAA,E,YAAgB14B,EAAA4P,EAAAjC,CAAK,EAAbgrB,KAAA,EAAAhrB,KAAd,EAAM,OAAN,EAAM,QAAAgrB,IAAA,G,GAANp7B,EAAA0P,EAAAyrB,CAAM,C,GAPV33B,EAAAy3B,CAAA,E,MAAA74B,EAAA64B,CAAA,E,MAAA/4B,EAAA+4B,EAAA,aAAAhrB,CAAA,EAGQorB,KAAA,EAAA7iB,EAAMp+B,EAACorB,CAAO,CAAA,CAAC,KAAEiK,EAAA,OAAY,M,EAHrC,OAAA,EAAA,QAAA4rB,IAAA,GAAA1gD,EAAAsgD,EAAAI,CAAA,E,EAEa,KAAAluB,EAAE,oBAAoB,CAAA,C,EAFnCxM,EAAA,SAAAs6B,EAIY,GAAW,EAAM7gD,EAACorB,CAAO,CAAA,CAAC,IAAMvE,EAAM,cAAc,KAAK,EAJrEjB,EAAA0P,EAAAurB,CAAA,C,UADSxrB,EAAA,OAAA,OAAS,GAACyB,EAAAP,CAAA,C,GAarB,IAAAuB,EAAM53B,EAAAg7B,EAAA,CAAA,EAANyE,EAAAr/B,EAAAw3B,EAAM,EAAA,EAGNE,EAAM93B,EAHN43B,EAAM,CAAA,EAGN+H,EAAAv/B,EAAA03B,EAAM,EAAA,EAjBR5O,EAAAwR,CAAG,EARLxR,EAAA8b,CAAE,E,uCAK6BnS,EAAE,wBAAuB,CAAI,IAAKsG,GAAGr5B,EAACorB,CAAO,CAAA,CAAC,SAAS,CAAA,CAAA,MAkBhF2H,EAAE,uBAAuB,MAGzBA,EAAE,yBAAyB,C,GAJ7BxM,EAAA,QAAAuR,MAAmEmuB,EAAKjmD,EAACorB,CAAO,CAAA,CAAA,EAGhF7E,EAAA,QAAAyR,MAAmEkuB,EAAOlmD,EAACorB,CAAO,CAAA,CAAA,EAzBtFxF,EAAA0P,EAAA4P,CAAE,C,GAFN9b,EAAA6b,CAAE,EAAFrf,EAAA0P,EAAA2P,CAAE,C,QAmCF,IAAA9P,EAACv1B,GAAA,EAADmgC,EAAAz/B,EAAA60B,EAAC,EAAA,EAA6BhP,EAAA,GAAA9lB,EAAA0/B,EAAAlK,CAAA,EAAA,KAAA9C,EAAE,uBAAuB,CAAA,CAAA,EAAvDnN,EAAA0P,EAAAH,CAAC,C,UApCME,EAAA,KAAA,OAAMyB,EAAAgE,CAAA,EAAAhE,EAAAwF,EAAA,EAAA,C,qCALV,C,ueC3CR,SAAAkqB,GAAA,EAAA,EAAA,C,QAQE,IAAIC,EAAmC1lD,EAAAs0B,EAAA,aAAA,EAAG,EAAK,EAAEmF,EAAGz5B,EAAAs0B,EAAA,MAAA,EAAG,EAAK,EAQtD4S,EAAW5P,GAAc,EAE/B,eAAequB,EAAQ,EAAM,CAExB,QAAQ3zB,EAAE,6BAA4B,CAAI,KAAM7F,EAAK,IAAI,CAAA,CAAA,GASxD,MALe+a,EAAS,YAAO5S,EAAA,IACvB,MAAM;;;;IAAO,CAAI,KAAMnI,EAAK,IAAI,CAAA,EAC1C6F,EAAE,sBAAqB,CAAI,KAAM7F,EAAK,IAAI,CAAA,CAAA,GAGlC,MAAKmI,EAAA,WAAA,CACjB,C,CAGoB,IAAAQ,EAAA70B,MAAA+xB,EAAE,kBAAkB,CAAA,EAAzCqH,EAAO9E,EAAA,C,UAAE,OAAAkF,EAAG,C,8DACV0L,GAAO9Q,EAAA,C,eAAW,OAAA6S,EAAS,K,IAE3B,IAAAhD,EAAE9jC,EAAAi0B,EAAA,CAAA,EAAF9L,EAAA2b,EAAE,OAAA5P,EAAA,KACc,GAAMnI,EAAK,MAAI,EAAf,IAAI,CAChB,IAAAgY,EAAErkC,GAAA,EACAq0B,EAAG9zB,EADL8jC,CAAE,EAEEjP,EAAI70B,EADN8zB,CAAG,EAEClJ,EAAI5qB,EADN60B,CAAI,EACF1L,EAAAlpB,EAAA2qB,EAAI,EAAA,EAAJ6O,EAAA15B,EAAA6qB,EAAI,CAAA,E,MAEF,IAAA4K,EAAIn2B,GAAA,EAAJw6B,EAAA95B,EAAAC,EAAAw1B,CAAI,CAAA,E,OAGqB,IAAAf,EAAA70B,MAAA,YAAAC,EAAAisB,CAAI,CAAA,CAAC,OAAO,UAAQ,EAAzCuI,GAAIH,EAAA,C,6EAAkEnP,MAAA5kB,EAAAw2B,EAAA92B,EAAAisB,CAAI,CAAA,CAAC,OAAO,IAAI,CAAA,E,iDAEtF/G,EAAA,GAAA5kB,EAAA02B,EAAApC,CAAA,EAAA,KAAA9C,EAAE,oBAAoB,CAAA,CAAA,E,gBAHpB9xB,EAAAisB,CAAI,CAAA,CAAC,OAAM4J,EAAAP,CAAA,EAAAO,EAAAwF,EAAA,EAAA,C,GAFjBlT,EAAAwN,CAAI,EAAJhR,EAAA0P,EAAAsB,CAAI,C,UADF6vB,EAAU,GAAA3vB,EAAAgE,CAAA,C,GAFhB1R,EAAA6M,CAAI,EAaJ,IAAAwL,EAAItgC,EAbJ80B,EAAI,CAAA,EAagC2L,EAAIxgC,EAAxCqgC,CAAI,EAAgC9B,EAAAt+B,EAAAugC,EAAI,EAAA,EAAJ/B,EAAA1+B,EAAAygC,CAAI,EAAxCxY,EAAAqY,CAAI,EAdNrY,EAAA8L,CAAG,EAiBH,IAAA0F,EAAGz5B,EAjBH+zB,EAAG,CAAA,EAiBHgG,EAAA95B,EAAAw5B,CAAG,E,MAEC,IAAA9C,EAAMn3B,GAAA,EAANo/B,EAAA1+B,EAAAy2B,EAAM,EAAA,EACJ3R,EAAA,GAAA5kB,EAAAw+B,EAAAlK,CAAA,EAAA,KAAA9C,EAAE,oBAAoB,CAAA,CAAA,EADxBxM,EAAA,QAAAuR,MAA6E4uB,EAAOzlD,EAACisB,CAAI,CAAA,CAAA,EAAzFtH,EAAA0P,EAAAwC,CAAM,C,QAIN,IAAAkK,EAAIphC,GAAA,EAAJq/B,EAAA5+B,EAAA2gC,EAAI,EAAA,EAAuB7b,EAAA,GAAA5kB,EAAA0+B,EAAApK,CAAA,EAAA,KAAA9C,EAAE,+BAA+B,CAAA,CAAA,EAA5DnN,EAAA0P,EAAA0M,CAAI,C,UALF/gC,EAAAisB,CAAI,CAAA,CAAC,WAAU4J,EAAAqE,CAAA,EAAArE,EAAA+J,EAAA,EAAA,C,GADrBzX,EAAAwR,CAAG,EAlBLxR,EAAA8b,CAAE,E,MAG4B7c,EAAAkC,EAAAtpB,EAAAisB,CAAI,CAAA,CAAC,IAAI,EAYCpF,EAAA8Z,EAAI,QAAA3gC,EAA0BisB,CAAI,CAAA,CAAC,QAAQ,EAAG7E,EAAAsX,EAAA1+B,EAAAisB,CAAI,CAAA,CAAC,QAAQ,E,oBAAY,KAAAmM,GAAGp4B,EAACisB,CAAI,CAAA,CAAC,SAAS,CAAA,C,EAfjItH,EAAA0P,EAAA4P,CAAE,C,GAFN9b,EAAA6b,CAAE,E,kCALG,C,uVC/BR,SAAA4hB,GAAA,EAAA,EAAA,C,QAIE,IAAIC,EAAallD,EAAAyzB,EAAA,OAAA,EAAG,IAAI,EAAExL,EAAKjoB,EAAAyzB,EAAA,QAAA,OAAA,CAAA,CAAA,EAAe1F,EAAI/tB,EAAAyzB,EAAA,OAAA,OAAGtC,EAAE,SAAS,CAAA,EAAG0X,EAAI7oC,EAAAyzB,EAAA,OAAA,EAAG,CAAC,EAEvEue,EAAQ/xC,EAAMC,EAACmlB,MAAc4C,EAAK,CAAA,CAAC,KAAK;CAAI,CAAA,CAAA,CAAA,EAC5CqD,EAAOrrB,EAAMC,EAACmlB,MAAc4C,EAAK,CAAA,CAAC,KAAK;CAAI,CAAA,CAAA,CAAA,EAE/C7C,MAAc,CACZ,IAAM+/B,EAAQl9B,EAAK,CAAA,CAAC,KAAK;CAAI,EAEzBk9B,IAAKhlD,EAAKmrB,CAAI,IAElBhG,EAAAgG,EAAO65B,EAAK,EAAA,EACZ7/B,EAAA0sB,EAAQmT,EAAK,EAAA,EACf,CAAC,EAED,IAAMC,EAAOhlD,MAAAD,EAAY6xC,CAAK,IAAA7xC,EAAKmrB,CAAI,CAAA,EAEjCw1B,MAAK3gD,EACT6xC,CAAA,CAAA,CACG,MAAM;CAAI,CAAA,CACV,IAAK,GAAQ9f,EAAI,KAAI,CAAA,CAAA,CACrB,OAAO,OAAO,EAGpB,IAAA8L,EAAKj+B,GAAA,EACHs0B,EAAIh0B,EADN29B,CAAK,EACHrV,EAAAroB,EAAA+zB,EAAI,EAAA,EAEJyT,EAAAvnC,EAFA8zB,EAAI,CAAA,EAEJnN,GAAA4gB,CAAA,EAAA,IAAAtU,EAAAjzB,EAAAunC,EAAA,CAAA,E,MAUE,IAAA9S,EAAIn1B,GAAA,EAAJs2B,EAAA71B,EAAA00B,EAAI,EAAA,EAAezQ,MAAA/jB,EAAA21B,EAAA+uB,EAAI,CAAA,CAAA,EAAvBlhC,EAAA0P,EAAAsB,CAAI,C,UADFkwB,EAAI,GAAAhwB,EAAAP,CAAA,C,GAIR,IAAAuB,EAAA31B,EAAAizB,EAAA,CAAA,EAAA6C,EAAA/1B,EAAA41B,EAAA,EAAA,EAhBF1O,EAAAwW,CAAK,E,oBAGH9X,EAAA4hB,EAAA,OAEEe,EAAI,CAAA,EAWN,EAAA,SAAA,CAAA1oC,EAGYilD,CAAO,EAGjB3+B,EAAA4P,EAAAtI,EAAI,CAAA,C,GAnBNrH,EAAAohB,MAAA3nC,EAMa6xC,CAAK,EAAA,GAAAvxC,EAALuxC,EAAKnU,CAAA,CAAA,EAOlBlZ,EAAA,QAAAuR,MAAAzC,EAAA,OAIuBqtB,EAAK,CAAA,CAAA,EApB9B98B,EAAA0P,EAAAsK,CAAK,E,GAFE,C,m1HCzBR,SAAAopB,GAAA,EAAA,EAAA,C,QAyBE,IAAIl8B,EAAqBzoB,EAAAgxB,EAAA,OAAA,EAAG,IAAI,EAE1B4zB,EAAK;;;;;;;;;;;;;yBAaYxF,GAAa;;;;;;;;;;;;;;;;;;;;;;;;;;8BA0BRA,GAAa;;IAInCxb,EAAW5P,GAAc,EAE3BzG,EAASttB,EAAO,IAAI,EACpB4kC,EAAY5kC,EAAMC,EAAA,CAAA,CAAA,CAAA,EAClBgkC,EAASjkC,EAAMC,EAAA,CAAA,CAAA,CAAA,EACf2kD,EAAQ5kD,EAAO,EAAE,EACjB6kD,EAAW7kD,EAAMC,EAAA,CAAA,CAAA,CAAA,EACjB6kD,EAAiB9kD,EAAO,IAAI,EAC5B6pB,EAAO7pB,EAAO,EAAE,EAChB+kD,EAAY/kD,EAAO,EAAE,EACrBglD,EAAUhlD,EAAO,EAAE,EACnBilD,EAAOjlD,EAAO,EAAE,EAChBklD,EAAWllD,EAAO,EAAE,EACpBmlD,EAAQnlD,EAAO,EAAE,EACjBolD,EAAgBplD,EAAO,EAAE,EACzBqlD,EAAcrlD,EAAO,EAAE,EACvBslD,EAAYtlD,EAAO,EAAE,EACrB6lB,GAAS7lB,EAAO,EAAE,EAClBulD,GAASvlD,EAAO,EAAE,EAClBwlD,GAAcxlD,EAAO,EAAE,EACvBylD,EAAczlD,EAAO,EAAE,EACvB0lD,GAAW1lD,EAAO,EAAE,EACpB2lD,EAAS3lD,EAAO,EAAE,EAClB4lD,GAAQ5lD,EAAMC,EAAA,CAAA,CAAA,CAAA,EACd4lD,GAAa7lD,EAAO,EAAE,EACtB05B,GAAU15B,EAAO,EAAI,EACrB8lD,GAAS9lD,EAAO,IAAI,EACpB+lD,GAAa7lD,MAAY,EAAOC,EAACmtB,CAAM,CAAA,EAAE,iBAAoB,IAAI,KAAIntB,EAACmtB,CAAM,CAAA,CAAC,eAAe,EAAI,IAAI,IAAI,EAEtG04B,GAAQ,C,CACX,uDAAwDv3B,EAAE,4BAA4B,C,GACtF,yDAA0DA,EAAE,uBAAuB,C,GAGhFw3B,GAAI/lD,MAAAC,EAAYmtB,CAAM,CAAA,EAAE,WAAa,MAAM,EAE3CuuB,GAAK37C,MAAAC,EACTmtB,CAAA,E,EAGQ,KAAMmB,EAAE,qBAAqB,EAC7B,MAAKtuB,EAAEmtB,CAAM,CAAA,CAAC,QAAUmB,EAAE,8BAA8B,EAAIA,EAAE,uBAAuB,C,GAErF,KAAMA,EAAE,0BAA0B,EAAG,MAAKtuB,EAAEmtB,CAAM,CAAA,CAAC,YAAY,U,GAC/D,KAAMmB,EAAE,yBAAyB,EAAG,MAAOsG,GAAG50B,EAACmtB,CAAM,CAAA,CAAC,SAAS,C,GAC/D,KAAMmB,EAAE,qBAAqB,EAAG,MAAO2G,GAAMj1B,EAACmtB,CAAM,CAAA,CAAC,UAAU,EAAG,KAAM,E,GACxE,KAAMmB,EAAE,6BAA6B,EAAG,MAAO2G,GAAMj1B,EAACmtB,CAAM,CAAA,CAAC,aAAa,EAAG,KAAM,E,OAKvF44B,GAAQ,CACX,CAAA,SAAUz3B,EAAE,wBAAwB,CAAA,EACpC,CAAA,WAAYA,EAAE,0BAA0B,CAAA,C,EAGrC03B,GAAM,CACT,CAAA,gBAAiB13B,EAAE,6BAA6B,CAAA,E,CAChD,+CAAgDA,EAAE,2BAA2B,C,GAC7E,kDAAmDA,EAAE,8BAA8B,C,GAGhF23B,GAAK,CACR,CAAA,UAAW,WAAY,kCAAkC,EACzD,CAAA,YAAa,aAAc,yBAAyB,EACpD,CAAA,SAAU,UAAW,+BAA+B,EACpD,CAAA,YAAa,aAAc,iCAAiC,CAC7D,CAAA,CAAA,KAAG,CAAG1kC,EAAK0M,EAAMi4B,KAAW,CAAO3kC,EAAK+M,EAAC,gBAAiBL,EAAI,OAAA,EAAWi4B,CAAW,CAAA,EAEtF,eAAeC,IAAY,CACzB,IAAMC,EAAU,OAAO,YAAYH,GAAM,KAAG,CAAG1kC,KAAG,CAAOA,EAAGvhB,EAAEylD,EAAK,CAAA,CAAClkC,EAAG,CAAE,KAAI,GAAM,IAAI,CAAA,CAAA,EACjF8kC,EAAcD,EAAQ,SAAWA,EAAQ,UAAOpmD,EAAKmtB,CAAM,CAAA,CAAC,QAElE,MAAMhL,GAAOikC,EAAS93B,EAAE,sBAAsB,CAAA,EAE1C+3B,GAAa,WAAWvsB,GAAM,GAAI,CACxC,CAEA,SAASwsB,IAAgB,CACvB,OAAOnkC,G,CAEH,oBAAmBniB,EAAEilD,CAAa,EAAG,OAAMjlD,EAACilD,CAAa,CAAA,EAAI,GAAK,EAClE,qBAAoBjlD,EAAEklD,CAAW,EAAG,OAAMllD,EAACklD,CAAW,CAAA,EAAI,MAAQ,EAClE,6BAA4BllD,EAAEmlD,CAAS,EAAG,OAAMnlD,EAACmlD,CAAS,CAAA,EAAI,MAAQ,EACtE,gBAAenlD,EAAEglD,CAAK,EAAG,OAAMhlD,EAACglD,CAAK,CAAA,EAAI,MAAQ,C,EAEnD12B,EAAE,sBAAsB,C,CAE5B,CAEA,IAEMi4B,GAAWxmD,MAAAC,EACfmtB,CAAM,CAAA,EAAE,cAAYntB,EAAI2kD,CAAc,EAAGhF,GAAiB3/C,EAACmtB,CAAM,CAAA,CAAC,aAAYntB,EAAE2kD,CAAc,CAAA,E,IAG1F6B,GAAKzmD,MAAY,GAAOC,EAACmtB,CAAM,CAAA,EAAE,MAAIntB,EAAImtB,CAAM,CAAA,EAAE,QAAO,EAExDs5B,GAAU,GACd,OAAO,QAAQh+B,GAAI,CAAA,CAAA,CAAA,CAChB,KAAG,CAAGi+B,EAAWC,KAAK,GAASD,EAAS,KAAMC,GAAK,CAAA,CACnD,KAAK;CAAI,EAEd,eAAe7sB,IAAO,CACpBrX,EAAA8W,GAAU,EAAI,EAEd,GAAI,CACF,IAAMQ,EAAO,MAAKnJ,EAAA,IAAK,MAAM4zB,EAAK,CAAI,SAAQ5zB,EAAA,QAAA,CAAA,EAE9CnO,EAAA0K,EAAS4M,EAAK,OAAM,EAAA,EACpBtX,EAAAgiB,EAAY1K,EAAK,gBAAe,EAAA,EAChCtX,EAAAqhB,EAAS/J,EAAK,OAAM,EAAA,EACpBtX,EAAAgiC,GAAS1qB,EAAK,QAAQ,eAAa,CAAA,EAAA,CAAQ,OAAQ,GAAStR,EAAK,SAAS,GAAG,CAAA,CAAA,CAAG,KAAK,IAAI,EAAA,EAAA,EACzFhG,EAAAiiC,EAAW3qB,EAAK,eAAc,EAAA,EAC9BtX,EAAAkiC,EAAiB5qB,EAAK,oBAAmB,EAAA,EACzCtX,EAAAiH,EAAOqQ,EAAK,QAAQ,MAAQ,GAAE,EAAA,EAC9BtX,EAAAmiC,EAAY7qB,EAAK,QAAQ,sBAAwB,GAAE,EAAA,EACnDtX,EAAAoiC,EAAU9qB,EAAK,QAAQ,SAAW,GAAE,EAAA,EACpCtX,EAAAqiC,EAAO/qB,EAAK,QAAQ,KAAO,KAAK,UAAUA,EAAK,OAAO,KAAM,KAAM,CAAC,EAAI,GAAE,EAAA,E,EACzEirB,EAAQjrB,EAAK,QAAQ,gBAAkB,OAAO,KAAK,MAAMA,EAAK,OAAO,gBAAkB,KAAK,CAAA,EAAK,G,MACjGkrB,EAAgBlrB,EAAK,QAAQ,oBAAsB,OAAO,KAAK,MAAMA,EAAK,OAAO,oBAAsB,EAAE,CAAA,EAAK,G,MAC9GmrB,EAAcnrB,EAAK,QAAQ,qBAAuB,OAAO,KAAK,MAAMA,EAAK,OAAO,qBAAuB,KAAK,CAAA,EAAK,G,MACjHorB,EAAYprB,EAAK,QAAQ,6BACrB,OAAO,KAAK,MAAMA,EAAK,OAAO,6BAA+B,KAAK,CAAA,EAClE,G,MACJgrB,EAAW,OAAO,KAAKhrB,EAAK,QAAQ,6BAA2B,CAAA,CAAA,CAAA,CAAQ,OACnE,KAAK,UAAUA,EAAK,OAAO,4BAA6B,KAAM,CAAC,EAC/D,G,IACJtX,EAAAiD,GAASqU,EAAK,QAAQ,yBAA2B,GAAE,EAAA,EACnDtX,EAAA2iC,GAASrrB,EAAK,QAAQ,qBAAuB,GAAE,EAAA,EAC/CtX,EAAA4iC,GAActrB,EAAK,gBAAe,EAAA,EAClCtX,EAAA6iC,EAAcvrB,EAAK,QAAQ,iBAAmB,GAAE,EAAA,EAChDtX,EAAA8iC,GAAWxrB,EAAK,QAAQ,cAAgB,GAAE,EAAA,EAC1CtX,EAAA+iC,EAASzrB,EAAK,QAAQ,YAAc,GAAE,EAAA,EACtCtX,EAAAgjC,GAAQ,OAAO,YAAYQ,GAAM,KAAG,CAAG1kC,KAAG,CAAOA,EAAKwY,EAAK,SAASxY,IAAQ,EAAE,CAAA,CAAA,EAAA,EAAA,EAC9EkB,EAAAijC,GAAae,GAAO1sB,EAAK,QAAQ,cAAc,EAAA,EAAA,CACjD,OAASjG,EAAQ,CACf0P,EAAS,MAAM1P,CAAM,CACvB,QAAU,CACRrR,EAAA8W,GAAU,EAAK,CACjB,CACF,CAEAO,GAAI,EAEJ,eAAe6Q,GAAI,EAAU,EAAW,EAAQ,CAC9C,IAAM5Q,EAAO,MAAMyJ,EAAS,YAAO5S,EAAA,IAAW,MAAMjG,EAAU4E,CAAS,EAAGwE,CAAM,EAIhF,OAFIgG,GAAM,MAAMD,GAAI,EAEbC,CACT,CAEA,IAAM5X,IAAU,EAAS,IACvBwoB,G;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAyDI,CAAA,SAAQ/Z,EAAA,SAAA,GAAKw1B,CAAO,EACtBryB,C,EAGE6yB,GAAY,GAChBxhC,EACG,MAAM,QAAQ,CAAA,CACd,IAAK,GAASqD,EAAK,KAAI,CAAA,CAAA,CACvB,OAAQ,GAASA,EAAK,SAAS,GAAG,CAAA,EAEvC,SAASo+B,GAAM,EAAK,EAAI,CACtB,IAAMp+B,EAAIzoB,EAAGmtB,CAAM,CAAA,CAAC,cAAc,OAAQ,GAAUiY,IAAU7jB,CAAG,EAEjEY,GAAM,CAAG,cAAe2kC,EAAE,CAAA,GAAOr+B,EAAMlH,CAAG,EAAIkH,CAAI,EAAI6F,EAAE,uBAAuB,CAAA,CACjF,CAEA,SAASy4B,IAAY,CACnB,IAAM7xB,EAAIl1B,EAAGmtB,CAAM,CAAA,CAAC,cAAc,OAAQ,GAAK,CAAMiY,EAAM,SAAS,GAAG,CAAA,EAEvEjjB,GAAM,CAAG,cAAa,CAAA,GAAM+S,EAAI,GAAK0xB,GAAQ5mD,EAACykD,CAAK,CAAA,CAAA,CAAA,EAAMn2B,EAAE,uBAAuB,CAAA,CACpF,CAEA,IAAM04B,GAAUjnD,MAAAC,EAAYmtB,CAAM,CAAA,EAAE,WAAW,SAAS,oBAAoB,GAAK,EAAK,EAEhF85B,IAAY,EAAO,IACvBH,EAAS,CAAA,GAAA,IAAI,IAAG,CAAA,GAAA9mD,EAAKmtB,CAAM,CAAA,CAAC,WAAYq0B,CAAK,CAAA,CAAA,EAAMxhD,EAAAmtB,CAAM,CAAA,CAAC,WAAW,OAAQ,GAAS1E,IAAS+4B,CAAK,EAEtG,SAAS0F,GAAgB,EAAI,CAC3B/kC,GAAM,CACF,WAAY8kC,GAAS,qBAAsBH,CAAE,CAAA,EAE3Cx4B,EADJw4B,EACM,+BACA,+BAA+B,CAAA,CAEzC,CAEA,SAASK,GAAc,EAAQ,CAC7B,IAAMzsB,EAAWpM,EAAE,wBAAwB,EAEvCqL,IAAM35B,EAAKmtB,CAAM,CAAA,CAAC,aAAW,CAAK,QAAQuN,CAAQ,EACpDZ,GAAI,EAIN3X,GAAM,CAAG,YAAawX,CAAM,EAAIrL,EAAE,wBAAwB,CAAA,CAC5D,CAEA,SAAS84B,GAAS,EAAM,CACtB,IAAMC,EAAOrnD,EAAG0lB,EAAM,IAAK,mBAAiB1lB,EAAImtB,CAAM,CAAA,CAAC,0BAA4B,kBAC7Ei5B,EAAUiB,EAAe,CAAA,GAAA5+B,EAAM,wBAAuBzoB,EAAE0lB,EAAM,CAAA,EAAK+C,EAEzEtG,GAAOikC,EAAmB93B,EAAV+4B,EAAY,8BAAmC,qBAAqB,CAAA,CACtF,CAEA,SAASC,IAAa,CACpB,IAAMxhC,EAAI9lB,EAAG8kD,CAAI,CAAA,CAAC,KAAI,EAEtB,GAAE,CAAGh/B,EACHshC,GAAQ,CAAG,KAAM,IAAI,CAAA,OAIvB,GAAI,CACFA,GAAQ,CAAG,KAAM,KAAK,MAAMthC,CAAI,EAAG,QAAS,IAAI,CAAA,CAClD,MAAQ,CACN0d,EAAS,MAAU,MAAMlV,EAAE,oBAAoB,CAAA,CAAA,CACjD,CACF,CAEA,SAASi5B,IAAe,CACtB,IAAMzhC,EAAI9lB,EAAG+kD,CAAQ,CAAA,CAAC,KAAI,EAE1B,GAAI,CACF5iC,GAAM,CAAG,4BAA6B2D,EAAO,KAAK,MAAMA,CAAI,EAAA,CAAA,CAAA,EAAUwI,EAAE,yBAAyB,CAAA,CACnG,MAAQ,CACNkV,EAAS,MAAU,MAAMlV,EAAE,wBAAwB,CAAA,CAAA,CACrD,CACF,CAEA,SAASk5B,IAAiB,CACxB,IAAMC,EAAKznD,EAAG0lD,EAAA,CAAA,CACX,MAAM;CAAI,CAAA,CACV,IAAK,GAASgC,EAAK,KAAI,CAAA,CAAA,CACvB,OAAO,OAAO,CAAA,CACd,IAAK,GAASA,EAAK,MAAM,GAAG,CAAA,CAAE,IAAK,GAASr/B,EAAK,KAAI,CAAA,CAAA,EAEpDo/B,EAAM,KAAM,GAAS7hC,EAAK,SAAW,GAAC,CAAKA,EAAK,IAAC,CAAMA,EAAK,EAAC,EAC/D4d,EAAS,MAAU,MAAMlV,EAAE,0BAA0B,CAAA,CAAA,EAIvDnM,GAAM,CACF,eAAgB,OAAO,YAAYslC,CAAK,CAAA,EAC1CA,EAAM,OAASn5B,EAAE,2BAA2B,EAAIA,EAAE,mCAAmC,CAAA,CAEzF,CAEA,IAAMq5B,GAAO,C,CACV,sBAAuBr5B,EAAE,oCAAoC,C,EAC7D,CAAA,qBAAsBA,EAAE,mCAAmC,CAAA,EAC3D,CAAA,kBAAmBA,EAAE,gCAAgC,CAAA,C,EAGxD,SAASs5B,GAAc,EAAQ,CAG7B,GAFAnlC,EAAAiD,GAASiU,EAAM,EAAA,EAEXA,IAAW,mBAAiB,CAAA35B,EAAKwmD,EAAK,EAAE,OAE5C,IAAMzyB,EACJ4F,IAAW,kBACPrL,EAAE,iCAAiC,EACnCtuB,EAAAmtB,CAAM,CAAA,CAAC,0BAA4B,kBACjCmB,EAAE,4BAA4B,EAC9BA,EAAE,sBAAsB,EAEhCnM,GAAM,CAAG,wBAAyBwX,CAAM,EAAI5F,CAAM,CACpD,CAEA,SAASrJ,IAAU,CACZ,QAAQ4D,EAAE,wBAAwB,CAAA,GAEvCqc,G;;SAII,CAAA,SAAQ/Z,EAAA,QAAA,EACVtC,EAAE,yBAAyB,C,CAE/B,CAEA,eAAeu5B,IAAS,CACtB,GAAE,CAAG,QAAQv5B,EAAE,uBAAuB,CAAA,EAAI,OAE1C,IAAMyL,EAAO,MAAM4Q,GAAG,yFAAA,CAElB,SAAQ/Z,EAAA,QAAA,EACVtC,EAAE,wBAAwB,CAAA,EAGxByL,GAAItX,EAAEkjC,GAAS5rB,EAAK,mBAAmB,OAAM,EAAA,CACnD,CAEA,SAAS+tB,IAAU,CACZ,QAAQx5B,EAAE,wBAAwB,CAAA,GAEvCqc,GAAG,oGAAA,CAEC,SAAQ/Z,EAAA,QAAA,EACVtC,EAAE,yBAAyB,CAAA,CAE/B,C,2BAICgD,GAAOT,EAAA,CAAA,CAAA,C,SAEP,IAAAJ,EAAG3yB,GAAA,EAAHw1B,EAAAnzB,EAAAswB,EAAG,EAAA,EACD/O,EAAA,GAAAthB,EAAAkzB,EAAAlC,CAAA,EAAA,KAAAoS,EAAS,MAAM,SAAWlV,EAAE,gBAAgB,CAAA,CAAA,EAD9CnN,EAAA0P,EAAAJ,CAAG,C,UAImD,IAAAW,EAAArxB,OAAA,CAAA,GAAI,WAAY,MAAOuuB,EAAE,aAAa,CAAA,EAAA,EAA5FyT,GAAIlR,EAAA,C,YAAQ,OAAA7wB,EAAAmtB,CAAM,CAAA,CAAC,I,WAAU,OAAAntB,EAAAmtB,CAAM,CAAA,CAAC,Q,6DAClCsU,GAAOrL,EAAA,C,eAAW,OAAAoN,EAAS,K,uBAGzB,IAAA9S,EAAC1yB,GAAA,EAADw1B,EAAAlzB,EAAAowB,CAAC,E,QAEsB,IAAAU,EAAArxB,MAAA,YAAAC,EAAAmtB,CAAM,CAAA,CAAC,WAAW,UAAQ,EAA/C6D,GAAIyF,EAAA,C,6EAAwE/U,MAAAthB,EAAA86B,EAAAl7B,EAAAmtB,CAAM,CAAA,CAAC,WAAW,IAAI,CAAA,E,+BAFpGxI,EAAA+L,CAAC,EACChP,EAAA,GAAAthB,EAAAozB,EAAA,GAAApC,GAAA,GAAA,EAAA,EAAA,KAAA9C,EAAE,sBAAsB,CAAA,CAAA,EAD1BnN,EAAA0P,EAAAH,CAAC,C,UADC1wB,EAAAmtB,CAAM,CAAA,CAAC,YAAUkF,EAAAqE,CAAA,C,uBAQnB,IAAAP,EAAGl4B,GAAA,EACDuzB,EAAIlxB,EADN61B,CAAG,EACDiF,EAAAj7B,EAAAqxB,EAAI,EAAA,EACJ6B,EAAMhzB,EADNmxB,EAAI,CAAA,EACJ8J,EAAAn7B,EAAAkzB,EAAM,EAAA,EAFR1O,EAAAwR,CAAG,E,8BACK7H,EAAE,qBAAoB,CAAI,IAAKsG,GAAG50B,EAACmtB,CAAM,CAAA,CAAC,UAAU,CAAA,CAAA,MACCmB,EAAE,gBAAgB,C,GAA7ExM,EAAA,QAAAuR,EAAiD3I,EAAO,EAF1DvJ,EAAA0P,EAAAsF,CAAG,C,UADDn2B,EAAAmtB,CAAM,CAAA,CAAC,YAAUkF,EAAAuE,EAAA,C,wBAQnB,IAAAN,EAAGp4B,GAAA,EACDi0B,EAAI7xB,EADNg2B,CAAG,EACDkF,EAAAr7B,EAAAgyB,EAAI,EAAA,EACJ5K,EAAIlnB,EADJ8xB,EAAI,CAAA,EACJuJ,EAAAv7B,EAAAonB,EAAI,EAAA,EAFN5C,EAAA2R,CAAG,E,aAEyC1S,EAAA8X,EAAA17B,EAAA2lD,EAAM,CAAA,C,EADtB,KAAAr3B,EAAE,oBAAoB,CAAA,C,EADlDnN,EAAA0P,EAAAyF,CAAG,C,WADDt2B,EAAA2lD,EAAM,GAAAtzB,EAAA6D,EAAA,C,yDAUFzC,EAAA1zB,MAAAuuB,EAAE,oBAAoB,CAAA,E,SAE1B,CAAA,KAAM,GAAIA,EAAE,sBAAsB,CAAA,EAClC,CAAA,SAAU,UAAWA,EAAE,qBAAqB,CAAA,EAC5C,CAAA,YAAa,aAAcA,EAAE,wBAAwB,CAAA,EACrD,CAAA,QAAS,SAAUA,EAAE,oBAAoB,CAAA,C,GAR7Coe,GAAA1V,GAAA,C,mCAEE,OAAA3O,EAAI,C,sDAUN,IAAAwO,GAAGx2B,EAAA22B,GAAA,CAAA,EAAHsF,GAAAh8B,EAAAu2B,EAAG,E,0BAIS,IAAAzF,EAAArxB,MAAAuuB,EAAE,qBAAqB,CAAA,EACxBmF,EAAA1zB,MAAAuuB,EAAE,oBAAoB,CAAA,EAH7BqH,EAAAgH,EAAA,C,iGAMI,IAAA5F,EAAG34B,GAAA,EAAHymB,EAAAkS,EAAG,OAAA/2B,EACK8jC,CAAM,EAAI,GAAOsB,EAAM,KAAG,EAAhB,IAAK,CACnB,IAAAjK,EAAKh9B,GAAA,EACHm5B,EAAAh3B,EADF66B,CAAK,EACHjY,EAAAoU,CAAA,EAAA,IAAAsE,EAAAv7B,EAAAi3B,CAAA,EAMamE,EAAIp7B,EAAAu7B,CAAA,EAAJG,EAAA57B,EAAAs7B,EAAI,EAAA,EAPnB9W,EAAAwW,CAAK,E,MACHjX,EAAAoT,EAAAlG,CAAA,EAMAxN,EAAAgY,EAAA,IAAA57B,EAAAolC,CAAK,CAAA,CAAC,MAAI,GAAA,EAAA,EAAgCxhB,EAAAmY,EAAA/7B,EAAAolC,CAAK,CAAA,CAAC,GAAG,C,EAHzC,KAAAplC,EAAAmtB,CAAM,CAAA,CAAC,cAAc,SAAQntB,EAAColC,CAAK,CAAA,CAAC,GAAG,CAAA,C,EAHjDtjB,EAAA,SAAAwV,EAIY,GAAUuvB,GAAK7mD,EAAColC,CAAK,CAAA,CAAC,IAAKhjB,EAAM,cAAc,OAAO,CAAA,EALpEjB,EAAA0P,EAAAsK,CAAK,C,GAFTxW,EAAAoS,CAAG,EAAH5V,EAAA0P,EAAAkG,CAAG,C,QAcH,IAAAwE,EAACl9B,GAAA,EAAD49B,EAAA37B,EAAAi7B,CAAC,E,OAC2BvK,GAAIqM,EAAA,C,8CAAiB3b,EAAA,GAAAthB,EAAA87B,EAAA9K,CAAA,EAAA,KAAA9C,EAAE,mBAAmB,CAAA,CAAA,E,0CADtE3J,EAAA4W,CAAC,E,kDACCjN,EAAE,oBAAoB,MAAyDA,EAAE,qBAAqB,C,GADxGnN,EAAA0P,EAAA0K,CAAC,C,UAfCv7B,EAAA8jC,CAAM,CAAA,CAAC,OAAMzR,EAAA8J,CAAA,EAAA9J,EAAAwF,EAAA,EAAA,C,iBAqBT,IAAAzG,EAAArxB,MAAAuuB,EAAE,qBAAqB,CAAA,EAD/B6S,EAAA1D,EAAA,C,gEAIS,OAAAspB,GAFR,IAAA,OAAU,CAAE,OAAA/mD,EAAAykD,CAAK,C,EAAjB,IAAA,MAAU,EAAA,CAAEhiC,EAAAgiC,EAAKzpB,EAAA,EAAA,C,IAKlB,IAAA4K,EAACvlC,EAAAo9B,EAAA,CAAA,EAADZ,EAAA18B,EAAAylC,EAAC,EAAA,E,iBACC5lC,EAAAmtB,CAAM,CAAA,CAAC,cAAc,OAClBmB,EAAE,qBAAoB,CAAI,OAAMtuB,EAAEmtB,CAAM,CAAA,CAAC,cAAc,KAAK,IAAI,CAAA,CAAA,EAChEmB,EAAE,wBAAwB,C,qDAK/BizB,GAAc1wB,EAAA,C,mCAAa,OAAA7wB,EAAAmtB,CAAM,CAAA,CAAC,c,eAAwB,OAAAntB,EAAAmtB,CAAM,CAAA,CAAC,a,EAA0B,UAAA2M,E,YADzF95B,EAAAmtB,CAAM,CAAA,CAAC,cAAc,QAAMkF,EAAA0K,CAAA,C,sBAK7BmjB,GAAArvB,EAAA,C,YACQ,OAAA7wB,EAAAmtB,CAAM,CAAA,CAAC,gB,EACL,OAAA,GAAqBhL,GAAM,CAAG,kBAAgB,EAAImM,EAAE,0BAA0B,CAAA,C,YAHtFtuB,EAAAmtB,CAAM,CAAA,CAAC,WAAa,WAASkF,EAAA6K,CAAA,C,iBAOd,IAAA9L,EAAArxB,MAAAuuB,EAAE,qBAAqB,CAAA,EAA1CqH,EAAO+P,EAAA,C,4DACL/H,EAAGz9B,EAAA8yC,CAAA,EACDhW,EAAI18B,EADNq9B,CAAG,EACDV,EAAA98B,EAAA68B,EAAI,EAAA,EACJsC,GADAj/B,EAAA28B,EAAI,CACJ,EAAA,C,YACQ,OAAAh9B,EAAAmtB,CAAM,CAAA,CAAC,c,kBACH,OAAAntB,EAAAykC,CAAS,C,EACT,SAAA,GAAmBtiB,GAAM,CAAG,gBAAc,EAAImM,EAAE,uBAAuB,CAAA,C,GALrF3J,EAAAgZ,CAAG,EASH,IAAAK,EAAG39B,EATHs9B,EAAG,CAAA,EAUDR,EAAI78B,EADN09B,CAAG,EACDZ,EAAAj9B,EAAAg9B,EAAI,EAAA,EACJmC,GADAj/B,EAAA88B,EAAI,CACJ,EAAA,C,YACQ,OAAAn9B,EAAAmtB,CAAM,CAAA,CAAC,a,kBACH,OAAAntB,EAAAykC,CAAS,C,EACT,SAAA,GAAkBtiB,GAAM,CAAG,eAAa,EAAImM,EAAE,uBAAuB,CAAA,C,GALnF3J,EAAAqZ,CAAG,E,8BARyB1P,EAAE,sBAAsB,MASxBA,EAAE,0BAA0B,C,oEASvC,IAAA8C,EAAArxB,MAAAuuB,EAAE,mBAAmB,CAAA,EAAxCqH,EAAOoQ,EAAA,C,oEAEG,IAAA3U,EAAArxB,MAAAC,EAAA8lD,EAAI,EAAGx3B,EAAE,iBAAiB,EAAIA,EAAE,sBAAsB,CAAA,EAD9D8zB,GAAAlc,EAAA,C,qCAEQ,OAAAlmC,EAAAmtB,CAAM,CAAA,CAAC,Y,EACL,OAAA,GAAiBhL,GAAM,CAAG,cAAY,EAAImM,EAAE,0BAA0B,CAAA,C,iBAIxE,IAAA8C,EAAArxB,MAAAuuB,EAAE,yBAAyB,CAAA,EADnC8zB,GAAA9b,EAAA,C,qCAEQ,OAAAtmC,EAAAmtB,CAAM,CAAA,CAAC,sB,EACL,OAAA,GACPhL,GAAM,CAAG,wBAAsB,EAAImM,EAAE,4BAA4B,CAAA,C,iBAI5D,IAAA8C,EAAArxB,MAAAuuB,EAAE,uBAAuB,CAAA,EADjC8zB,GAAA7b,EAAA,C,qCAEQ,OAAAvmC,EAAAmtB,CAAM,CAAA,CAAC,S,EACL,OAAA,GAAchL,GAAM,CAAG,WAAS,EAAImM,EAAE,0BAA0B,CAAA,C,sDAKvD,IAAA8C,EAAArxB,MAAAuuB,EAAE,mBAAmB,CAAA,EAAxCqH,EAAO9E,EAAA,C,4DACLwiB,EAACnzC,EAAA4lC,CAAA,EAADtI,EAAAr9B,EAAAkzC,EAAC,EAAA,EAADQ,EAAAxzC,EAAAgzC,EAAC,CAAA,E,CAKO,IAAAjiB,EAAArxB,MAAAuuB,EAAE,sBAAsB,CAAA,EADhC6S,EAAA0S,EAAA,C,gJAOe,WAAAuT,GAAQpnD,EAAC6kD,CAAO,CAAA,CAAC,KAAI,EAAO,CAAA,QAAO7kD,EAAE6kD,CAAO,CAAA,CAAC,KAAI,EAAI,KAAM,IAAI,EAAO,CAAA,QAAS,IAAI,CAAA,EALjG,IAAA,OAAU,CAAE,OAAA7kD,EAAA6kD,CAAO,C,EAAnB,IAAA,MAAU,EAAA,CAAEpiC,EAAAoiC,EAAO7pB,EAAA,EAAA,C,IAQpB,IAAAa,EAAKx7B,EAAAwzC,EAAA,CAAA,EACHtW,EAAIj9B,EADNu7B,CAAK,EACH+B,EAAAz9B,EAAAo9B,EAAI,EAAA,EACJ0H,EAAA5kC,EADAk9B,EAAI,CAAA,EACJlZ,GAAA4gB,CAAA,EAAA5hB,EAAA4hB,EAAA,cAIc,qBAAqB,EAGnC,IAAA1R,EAAMlzB,EAPN4kC,EAAA,CAAA,EAOA/G,EAAA/9B,EAAAozB,EAAM,EAAA,EATR5O,EAAAkX,CAAK,EAAL,IAAAiY,EAAAzzC,EAAAw7B,EAAK,CAAA,E,OAeK,IAAAzK,EAAArxB,MAAAuuB,EAAE,iBAAiB,CAAA,EAF3BouB,GAAA7rB,EAAA,C,cACU,OAAA7wB,EAAAmtB,CAAM,CAAA,CAAC,0B,2BAEL,SAAA,GACThL,GAAM,CACF,2BAA4B2kC,CAAE,EAE5Bx4B,EADJw4B,EACM,wBACA,wBAAwB,CAAA,C,aATjC9mD,EAAAwmD,EAAK,GAAAn0B,EAAAqL,CAAA,C,0CAzBPpP,EAAE,kBAAkB,MAcMA,EAAE,kBAAkB,MAQ2BA,EAAE,aAAa,C,GAPxFzK,EAAAohB,MAAAjlC,EAKa8kD,CAAI,EAAA,GAAAtkD,EAAJskD,EAAI9pB,CAAA,CAAA,EAEjBlZ,EAAA,QAAAyR,EAA4D+zB,EAAU,E,yCAzBvEtnD,EAAA8lD,EAAI,GAAAzzB,EAAA0L,CAAA,C,uBA6CY,IAAA3M,EAAArxB,MAAAuuB,EAAE,sBAAsB,CAAA,EAA3CqH,EAAO9E,EAAA,C,4DACL6kB,EAACx1C,EAAAimC,CAAA,EAAD/H,EAAAj+B,EAAAu1C,EAAC,EAAA,EAADtB,EAAA/zC,EAAAq1C,EAAC,CAAA,E,CAKO,IAAAtkB,EAAArxB,MAAAuuB,EAAE,sBAAsB,CAAA,EADhC8zB,GAAAhO,EAAA,C,qCAEQ,OAAAp0C,EAAAmtB,CAAM,CAAA,CAAC,yB,EACL,OAAA,GAA8BhL,GAAM,CAAG,2BAAyB,EAAImM,EAAE,sBAAsB,CAAA,C,sBAIpG,IAAAkwB,EAAK7/C,GAAA,EACH0/B,EAAI/9B,EADNk+C,CAAK,EACHlgB,EAAAn+B,EAAAk+B,EAAI,EAAA,EACJigB,EAAAj+C,EADAg+B,EAAI,CAAA,EACJha,GAAAi6B,CAAA,EAAAj7B,EAAAi7B,EAAA,cAIc,yFAAyF,EAGvG,IAAAjjB,EAAMh7B,EAPNi+C,EAAA,CAAA,EAOA9f,EAAAr+B,EAAAk7B,EAAM,EAAA,EATR1W,EAAA65B,CAAK,E,yBACuB,KAAAlwB,EAAE,wBAAwB,MAQuBA,EAAE,aAAa,CAAA,C,EAP1FzK,EAAAy6B,MAAAt+C,EAKa+kD,CAAQ,EAAA,GAAAvkD,EAARukD,EAAQ/pB,CAAA,CAAA,EAErBlZ,EAAA,QAAAuZ,EAA4DksB,EAAY,EAT1EpmC,EAAA0P,EAAA2tB,CAAK,C,UADHx+C,EAAAmtB,CAAM,CAAA,CAAC,YAAUkF,EAAAmgB,CAAA,C,GATnB9wB,EAAA,GAAAthB,EAAAg+B,EAAAhN,CAAA,EAAA,KAAA9C,EAAE,qBAAqB,CAAA,CAAA,E,yCAHxBtuB,EAAA8lD,EAAI,GAAAzzB,EAAAwgB,CAAA,C,qCA4BM,IAAAzhB,EAAArxB,MAAAuuB,EAAE,iBAAiB,CAAA,EAAlCqH,EAAO6f,EAAA,C,0CACLrN,GAAQtX,EAAA,C,uCAAQ,OAAA2S,C,aAAgB,OAAAxjC,EAAAmtB,CAAM,CAAA,CAAC,Q,EAAoB,SAAA2M,G,qDAG9C,IAAA1I,EAAArxB,MAAAuuB,EAAE,eAAe,CAAA,EAAhCqH,EAAOigB,EAAA,C,0CACLzJ,GAAMtb,EAAA,C,uCAAQ,OAAA2S,C,aAAgB,OAAAxjC,EAAAmtB,CAAM,CAAA,CAAC,M,EAAkB,SAAA2M,G,qDAI9C,IAAAiB,EAAO,GAAA,C,CACe,IAAA3J,EAAArxB,MAAA,oBAAAC,EAAAmtB,CAAM,CAAA,CAAC,UAAQ,EAA5C6D,GAAIH,EAAA,C,kFAA0EnP,EAAA,GAAAthB,EAAAs+B,EAAAtN,CAAA,EAAA,KAAA9C,EAAE,qBAAqB,CAAA,CAAA,E,iCAF1F8C,EAAArxB,MAAAuuB,EAAE,uBAAuB,CAAA,EAAxCqH,EAAOmgB,EAAA,C,yBACI,U,kBAI4B,IAAA1kB,EAAArxB,MAAAuuB,EAAE,uBAAuB,CAAA,EAA9D4a,GAAMrY,EAAA,C,aAAS,OAAA7wB,EAAAmtB,CAAM,CAAA,CAAC,M,oFAItB40B,GAAUlxB,EAAA,C,mCAAa,OAAA7wB,EAAAmtB,CAAM,CAAA,CAAC,U,EAAwB,WAAA2M,E,YADpD95B,EAAAmtB,CAAM,CAAA,CAAC,WAAW,QAAMkF,EAAA0gB,CAAA,C,sBAK1BgO,GAAQlwB,EAAA,C,mCAAa,OAAA7wB,EAAAmtB,CAAM,CAAA,CAAC,Q,EAAqB,UAAA2M,E,aAD/C95B,EAAAmtB,CAAM,CAAA,CAAC,WAAW,QAAMntB,EAAImtB,CAAM,CAAA,CAAC,SAAS,SAAMkF,EAAAigB,CAAA,C,qCAInC,IAAAlhB,EAAArxB,MAAAuuB,EAAE,2BAA2B,CAAA,EAAhDqH,EAAOqhB,EAAA,C,oEACQ,IAAA5lB,EAAArxB,MAAAuuB,EAAE,0BAA0B,CAAA,EAAzC6S,EAAKsW,EAAA,C,yBAAuE,WAAAt1B,GAAM,CAAG,KAAIniB,EAAJ0pB,CAAI,CAAA,EAAI4E,EAAE,wBAAwB,CAAA,EAA3E,IAAA,OAAU,CAAE,OAAAtuB,EAAA0pB,CAAI,C,EAAhB,IAAA,MAAU,EAAA,CAAEjH,EAAAiH,EAAIsR,EAAA,EAAA,C,iBAE5Dwf,GAAK9C,EAAA,C,WAAO,OAAA13C,EAAA07C,EAAK,C,uBAGf,IAAA1F,EAACl3C,GAAA,EAAD2nC,EAAAtmC,EAAA61C,EAAC,EAAA,EAAet0B,EAAA,GAAAthB,EAAAqmC,EAAArV,CAAA,EAAA,KAAA9C,EAAE,0BAA0B,CAAA,CAAA,EAA5CnN,EAAA0P,EAAAmlB,CAAC,C,QAED,IAAAkS,EAACppD,GAAA,EAAD8zC,EAAAzyC,EAAA+nD,EAAC,EAAA,EAAexmC,EAAA,GAAAthB,EAAAwyC,EAAAxhB,CAAA,EAAA,KAAA9C,EAAE,4BAA4B,CAAA,CAAA,EAA9CnN,EAAA0P,EAAAq3B,CAAC,C,QAED,IAAAxJ,EAAK1/C,GAAA,EACHwoC,EAAIlnC,EADNo+C,CAAK,EACH5L,EAAA3yC,EAAAqnC,EAAI,EAAA,EACJ4U,EAAA/7C,EADAmnC,EAAI,CAAA,EACJ3iB,EAAAu3B,EAAA,OAKQuL,IAAO,CAAKpmC,EAAKgQ,KAAQhQ,GAAG,EAAA,IAAA,C,wBAAhB,IAAAA,MAAIvhB,EAAAiyB,CAAA,CAAA,CAAA,GAACV,MAAMvxB,EAAAiyB,CAAA,CAAA,CAAA,GAC3B,IAAAqqB,EAAMv9C,GAAA,EAANm0C,EAAA/yC,EAAAm8C,EAAM,EAAA,E,YAAc14B,EAAAsvB,EAAA3hB,EAAK,CAAA,EAAXgrB,KAAA,EAAAh7B,EAAG,KAAjB,EAAM,OAAN,EAAM,QAAAg7B,IAAA,G,GAANp7B,EAAA0P,EAAAyrB,CAAM,C,GANV33B,EAAAy3B,CAAA,E,MAAA74B,EAAA64B,CAAA,EAFFz3B,EAAA+5B,CAAK,E,aAIKlC,KAAA,EAAAx8C,EAAA0lB,EAAM,K,EAFd,OAAA,EAAA,QAAA82B,IAAA,GAAA97C,EAAA07C,EAAAI,CAAA,E,EAD0B,KAAAluB,EAAE,mCAAmC,CAAA,C,EAC/DxM,EAAA,SAAAs6B,EAGY,GAAUwL,GAAcxlC,EAAM,cAAc,KAAK,CAAA,EAL/DjB,EAAA0P,EAAA6tB,CAAK,C,UALH1+C,EAAA8lD,EAAI,EAAAzzB,EAAAgiB,CAAA,EAAAr0C,EAECmtB,CAAM,CAAA,CAAC,0BAA4B,OAAMkF,EAAAojB,EAAA,CAAA,EAAApjB,EAAA+J,EAAA,EAAA,C,sBAkBhD,IAAA+rB,EAAClpD,GAAA,EAADk0C,EAAAhzC,EAAAgoD,EAAC,EAAA,EAA+BzmC,EAAA,GAAAthB,EAAA+yC,EAAA/hB,CAAA,EAAA,KAAA9C,EAAE,gCAAgC,CAAA,CAAA,EAAlEnN,EAAA0P,EAAAs3B,CAAC,C,UADCnoD,EAAA0lB,EAAM,IAAK,mBAAiB,CAAA1lB,EAAKwmD,EAAK,GAAAn0B,EAAA0jB,CAAA,C,iCAKxCqS,EAAKloD,EAAA05C,CAAA,EACHnS,EAAInnC,EADN8nD,CAAK,EACHhV,EAAAjzC,EAAAsnC,EAAI,EAAA,EACJ4gB,EAAAhoD,EADAonC,EAAI,CAAA,EACJ5iB,EAAAwjC,EAAA,OAKQtC,IAAQ,CAAKxkC,EAAKgQ,KAAQhQ,GAAG,EAAA,IAAA,C,wBAAhB,IAAAA,MAAIvhB,EAAAk1C,CAAA,CAAA,CAAA,GAAC3jB,MAAMvxB,EAAAk1C,CAAA,CAAA,CAAA,GAC5B,IAAAoT,EAAMvpD,GAAA,EAANu0C,EAAAnzC,EAAAmoD,EAAM,EAAA,E,YAAc1kC,EAAA0vB,EAAA/hB,EAAK,CAAA,EAAXg3B,KAAA,EAAAhnC,EAAG,KAAjB,EAAM,OAAN,EAAM,QAAAgnC,IAAA,G,GAANpnC,EAAA0P,EAAAy3B,CAAM,C,GANV3jC,EAAA0jC,CAAA,E,MAAA9kC,EAAA8kC,CAAA,EAFF1jC,EAAAyjC,CAAK,EAAL,IAAA7O,EAAAl5C,EAAA+nD,EAAK,CAAA,E,OAeK,IAAAh3B,EAAArxB,MAAAuuB,EAAE,4BAA4B,CAAA,EAExBmF,EAAA1zB,MAAAuuB,EAAE,wCAAwC,CAAA,EAHxD6S,EAAAtQ,EAAA,C,mHAQG,WAAA1O,GAAM,CACF,oBAAmBniB,EAAEolD,EAAM,CAAA,CAAC,KAAI,GAAM,IAAI,EAAAplD,EAC5ColD,EAAM,CAAA,CAAC,KAAI,EAAK92B,EAAE,sBAAsB,EAAIA,EAAE,wBAAwB,CAAA,EAR1E,IAAA,OAAU,CAAE,OAAAtuB,EAAAolD,EAAM,C,EAAlB,IAAA,MAAU,EAAA,CAAE3iC,EAAA2iC,GAAMpqB,EAAA,EAAA,C,eAHjBh7B,EAAAmtB,CAAM,CAAA,CAAC,cAAgB,YAAUntB,EAAImtB,CAAM,CAAA,CAAC,sBAAmBkF,EAAAkkB,CAAA,C,gBAgB7D1xB,EAAA80B,EAAA,OAAAqM,IAAM,CAAKxE,EAAOjwB,KAAQiwB,GAAK,EAAA,IAAA,C,wBAApB,IAAAA,MAAMxhD,EAAAk4C,CAAA,CAAA,CAAA,GAAC3mB,MAAMvxB,EAAAk4C,CAAA,CAAA,CAAA,G,CAElB,IAAA9mB,EAAArxB,MAAAC,EAAAmtB,CAAM,CAAA,CAAC,WAAW,SAASq0B,EAAK,CAAA,CAAA,EAD1C9E,GAAA7rB,EAAA,C,uCAEE,OAAAU,EAAK,C,EACK,SAAA,GAAOpP,GAAM,CAAG,WAAY8kC,GAASzF,EAAK,EAAEsF,CAAE,CAAA,EAAKx4B,EAAE,uBAAuB,CAAA,C,mBA7BhFk6B,KAAA,EAAAxoD,EAAAmtB,CAAM,CAAA,CAAC,e,EAFf,OAAA,EAAA,QAAAq7B,IAAA,GAAA9nD,EAAA2nD,EAAAG,CAAA,E,EAD0B,KAAAl6B,EAAE,8BAA8B,CAAA,C,EAC1DxM,EAAA,SAAAumC,EAGY,GAAUlB,GAAc/kC,EAAM,cAAc,KAAK,CAAA,E,gBAN5DpiB,EAAA8lD,EAAI,GAAAzzB,EAAAskB,CAAA,C,uBA0CC,IAAAvlB,EAAArxB,MAAAuuB,EAAE,gCAAgC,CAAA,EAF1CouB,GAAA7rB,EAAA,C,cACU,OAAA7wB,EAAAgnD,EAAU,C,2BAET,SAAAE,E,aAJTlnD,EAAAmtB,CAAM,CAAA,CAAC,YAAUntB,EAAImtB,CAAM,CAAA,CAAC,0BAA4B,QAAMkF,EAAA4kB,CAAA,C,GAQlE,IAAA5Q,EAAGhmC,EAAAw5C,EAAA,CAAA,EAAHG,EAAA15C,EAAA+lC,CAAG,E,iBAEC1K,EAAMz7B,EAAAuoD,CAAA,EAANlV,EAAApzC,EAAAw7B,EAAM,EAAA,EAAN+sB,EAAAroD,EAAAs7B,EAAM,CAAA,E,MAEJ,IAAA+L,EAAIvoC,GAAA,EAAJq0C,EAAArzC,EAAAunC,EAAI,EAAA,E,MAAJ5iB,GAAA4iB,EAAI,EAAA,uBAAA1nC,EAA6B4lD,EAAa,EAAG,aAAe,cAAY,E,aAC1Et3B,EAAEtuB,EAAA4lD,EAAa,EAAG,qCAAuC,qCACxD,CAAA,IAAKhxB,GAAG50B,EAACmtB,CAAM,CAAA,CAAC,eAAe,CAAA,C,IAFlChM,EAAA0P,EAAA6W,CAAI,C,UADF1nC,EAAAmtB,CAAM,CAAA,CAAC,iBAAekF,EAAAshB,CAAA,C,GADgCjyB,EAAA,GAAAthB,EAAAmzC,EAAAniB,CAAA,EAAA,KAAA9C,EAAE,4BAA4B,CAAA,CAAA,EAAxFxM,EAAA,QAAA6Z,EAAiDksB,EAAM,E,QADrD/d,EAAA/pC,MAAAC,EAAAmtB,CAAM,CAAA,CAAC,wBAAwB,WAAW,eAAe,CAAA,E,wCAW3D,IAAA6O,EAAM38B,GAAA,EAAN20C,EAAA7zC,EAAA67B,EAAM,EAAA,EACJta,EAAA,GAAAthB,EAAA4zC,EAAA5iB,CAAA,EAAA,KAAA9C,EAAE,6BAA6B,CAAA,CAAA,EADjCxM,EAAA,QAAAka,EAAuE8rB,EAAO,EAA9E3mC,EAAA0P,EAAAmL,CAAM,C,UADHh8B,EAAAmtB,CAAM,CAAA,CAAC,YAAUkF,EAAA+mB,CAAA,C,GAXxBz0B,EAAA0hB,CAAG,E,mDAoBgB,IAAAjV,EAAArxB,MAAAuuB,EAAE,mBAAmB,CAAA,EAAxCqH,EAAO9E,EAAA,C,oEAEG,IAAAO,EAAArxB,MAAAuuB,EAAE,uBAAuB,CAAA,EADjC6S,EAAA2nB,EAAA,C,oFAMe,WAAA3mC,GAAM,CAAG,aAAYniB,EAAEulD,EAAQ,CAAA,CAAC,KAAI,CAAA,EAAMj3B,EAAE,0BAA0B,CAAA,EAJpF,IAAA,OAAU,CAAE,OAAAtuB,EAAAulD,EAAQ,C,EAApB,IAAA,MAAU,EAAA,CAAE9iC,EAAA8iC,GAAQvqB,EAAA,EAAA,C,IAOrB,IAAAwL,EAAGnmC,EAAAyoD,EAAA,CAAA,EAAHC,EAAAzoD,EAAAkmC,CAAG,E,CAEO,IAAApV,EAAArxB,MAAAuuB,EAAE,qBAAqB,CAAA,EAD/B6S,EAAA4nB,EAAA,C,oIAQG,WAAA5mC,GAAM,CACF,WAAUniB,EAAEwlD,CAAM,CAAA,CAAC,KAAI,GAAM,IAAI,EAAAxlD,EACnCwlD,CAAM,CAAA,CAAC,KAAI,EAAKl3B,EAAE,sBAAsB,EAAIA,EAAE,wBAAwB,CAAA,EAR1E,IAAA,OAAU,CAAE,OAAAtuB,EAAAwlD,CAAM,C,EAAlB,IAAA,MAAU,EAAA,CAAE/iC,EAAA+iC,EAAMxqB,EAAA,EAAA,C,IAWnB,IAAA2M,EAAItnC,EAAA0oD,EAAA,CAAA,EAAJ7U,EAAA/zC,EAAAwnC,EAAI,EAAA,EAdNhjB,EAAA6hB,CAAG,EAAH,IAAAwiB,EAAA3oD,EAAAmmC,EAAG,CAAA,E,eAmBE,KAAMlY,EAAE,sBAAsB,EAAG,MAAKtuB,EAAEqlD,EAAW,EAAE,KAAM,E,GAC3D,KAAM/2B,EAAE,sBAAsB,EAAG,MAAKtuB,EAAEmtB,CAAM,CAAA,CAAC,iBAAgB,kBAAAntB,EAAqBmtB,CAAM,CAAA,CAAC,WAAa,KAAM,KAAM,E,IAHzHqtB,GAAAwO,EAAA,C,0BAOA,IAAAC,EAAK5oD,EAAA2oD,EAAA,CAAA,EACHvd,EAAInrC,EADN2oD,CAAK,EACH1U,EAAAp0C,EAAAsrC,EAAI,EAAA,EACJyd,EAAA7oD,EADAorC,EAAI,CAAA,EACJ5mB,EAAAqkC,EAAA,OAKQrD,IAAQ,CAAKsD,EAAQ53B,KAAQ43B,GAAM,EAAA,IAAA,C,wBAAtB,IAAAA,MAAOnpD,EAAAs4C,CAAA,CAAA,CAAA,GAAC/mB,MAAMvxB,EAAAs4C,CAAA,CAAA,CAAA,GAC/B,IAAA8Q,EAAMrqD,GAAA,EAAN01C,EAAAt0C,EAAAipD,EAAM,EAAA,E,YAAiBxlC,EAAA6wB,EAAAljB,EAAK,CAAA,EAAd83B,KAAA,EAAAF,EAAM,KAApB,EAAM,OAAN,EAAM,QAAAE,IAAA,G,GAANloC,EAAA0P,EAAAu4B,CAAM,C,GANVzkC,EAAAukC,CAAA,E,MAAA3lC,EAAA2lC,CAAA,EAFFvkC,EAAAskC,CAAK,EAaL,IAAAM,EAAKlpD,EAbL4oD,EAAK,CAAA,EAcHzU,EAAIl0C,EADNipD,CAAK,EACH3U,EAAAz0C,EAAAq0C,EAAI,EAAA,EACJ+J,EAAAl+C,EADAm0C,EAAI,CAAA,EACJnwB,GAAAk6B,CAAA,EAMA,IAAAhZ,EAAAllC,EANAk+C,EAAA,CAAA,EAMAzJ,EAAA30C,EAAAolC,EAAA,EAAA,EARF5gB,EAAA4kC,CAAK,EAqBL,IAAAC,EAAKnpD,EArBLkpD,EAAK,CAAA,EAsBHnU,EAAI90C,EADNkpD,CAAK,EACHnU,EAAAl1C,EAAAi1C,EAAI,EAAA,EACJqJ,EAAAp+C,EADA+0C,EAAI,CAAA,EACJ/wB,GAAAo6B,CAAA,EAAAp7B,EAAAo7B,EAAA,cAIc;;;;wCAAa,EAG3B,IAAAtI,EAAI91C,EAPJo+C,EAAA,CAAA,EAOAlJ,EAAAp1C,EAAAg2C,EAAI,EAAA,EACJ3Q,EAAMnlC,EADN81C,EAAI,CAAA,EACJR,GAAAx1C,EAAAqlC,EAAM,EAAA,EAVR7gB,EAAA6kC,CAAK,EAAL,IAAAC,EAAAppD,EAAAmpD,EAAK,CAAA,E,CAeG,IAAAp4B,EAAArxB,MAAAuuB,EAAE,6BAA6B,CAAA,EAFvCouB,GAAA+M,EAAA,C,cACU,OAAAzpD,EAAAmtB,CAAM,CAAA,CAAC,kB,2BAEL,SAAA,GACThL,GAAM,CACF,mBAAoB2kC,CAAE,EACnBx4B,EAALw4B,EAAO,gCAAqC,4BAA4B,CAAA,C,iBAMrE,IAAA11B,EAAArxB,MAAAuuB,EAAE,2BAA2B,CAAA,EAFrCouB,GAAAgN,EAAA,C,cACU,OAAA1pD,EAAAmtB,CAAM,CAAA,CAAC,gB,2BAEL,SAAA,GACThL,GAAM,CACF,iBAAkB2kC,CAAE,EAElBx4B,EADJw4B,EACM,kCACA,kCAAkC,CAAA,C,qCA7DnCwC,KAAA,EAAAtpD,EAAAmtB,CAAM,CAAA,CAAC,kBAAoB04B,GAAS,EAAC,CAAE,M,EAF/C,OAAA,EAAA,QAAAyD,IAAA,GAAA5oD,EAAAwoD,EAAAI,CAAA,G,0CAZmBh7B,EAAE,0BAA0B,MAWrBA,EAAE,sBAAsB,MAaxBA,EAAE,yBAAyB,MAgBnDA,EAAE,aAAa,MAKSA,EAAE,wBAAwB,MAQjCA,EAAE,6BAA6B,MAC2BA,EAAE,aAAa,C,GA1C5FxM,EAAA,SAAAonC,EAGY,GAAU/mC,GAAM,CAAG,iBAAkBC,EAAM,cAAc,KAAK,EAAIkM,EAAE,sBAAsB,CAAA,CAAA,EAUtGzK,EAAA06B,MAAAv+C,EAIaslD,CAAW,EAAA,GAAA9kD,EAAX8kD,EAAWtqB,CAAA,CAAA,EAExBlZ,EAAA,QAAAyjB,MAIGpjB,GAAM,CACF,gBAAeniB,EAAEslD,CAAW,CAAA,CAAC,KAAI,CAAA,EAAAtlD,EACnCslD,CAAW,CAAA,CAAC,KAAI,EAAKh3B,EAAE,kCAAkC,EAAIA,EAAE,oCAAoC,CAAA,CAAA,EASxGzK,EAAA46B,MAAAz+C,EAKa0lD,EAAU,EAAA,GAAAllD,EAAVklD,GAAU1qB,CAAA,CAAA,EAGvBlZ,EAAA,QAAA0jB,EAA4DgiB,EAAc,E,yCA/E5ExnD,EAAA8lD,EAAI,GAAAzzB,EAAAmnB,CAAA,C,iBA0GW,IAAApoB,EAAArxB,MAAAuuB,EAAE,oBAAoB,CAAA,EAAzCqH,EAAOi0B,EAAA,C,4DACLpY,EAAGtxC,EAAA2pD,CAAA,EAAHC,EAAAxpD,EAAAkxC,CAAG,EACDsK,GAAUgO,EAAA,C,aAAE,OAAA9pD,EAAAmtB,CAAM,C,8DAClB,IAAA48B,EAAC1pD,EAAAypD,EAAA,CAAA,EAADE,EAAA1pD,EAAAypD,CAAC,E,gBAEGroC,EAAA,GAAAthB,EAAA61C,EAAA7kB,CAAA,EAAA,KAAA9C,EAAE,yBAAyB,CAAA,CAAA,E,wBAE3B5M,EAAA,GAAAthB,EAAAg2C,EAAAhlB,CAAA,EAAA,KAAA9C,EAAE,uBAAuB,CAAA,CAAA,E,gBAHtBtuB,EAAAmtB,CAAM,CAAA,CAAC,WAAUkF,EAAAmZ,EAAA,EAAA,EAAAnZ,EAAA4nB,CAAA,C,GADxBt1B,EAAAolC,CAAC,EAFHplC,EAAA6sB,CAAG,EAWH,IAAAjjB,EAAAluB,EAXAmxC,EAAG,CAAA,EAWHyY,EAAA3pD,EAAAiuB,CAAA,EAOQ1J,EAAAolC,EAAA,OAAAhE,IAAK,CAAK1kC,EAAKgQ,EAAO20B,KAAc3kC,GAAG,EAAA,IAAA,C,wBAA7B,IAAAA,MAAIvhB,EAAAkqD,CAAA,CAAA,CAAA,GAAC34B,MAAMvxB,EAAAkqD,CAAA,CAAA,CAAA,GAAChE,MAAYlmD,EAAAkqD,CAAA,CAAA,CAAA,GACtC/oB,EAAKtQ,EAAA,C,YAAE,OAAAU,EAAK,C,oBAA2B,OAAA20B,EAAW,C,6DAApC,IAAA,OAAU,CAAE,OAAAlmD,EAAAylD,EAAK,CAAA,CAAClkC,EAAG,E,EAArB,IAAA,MAAU,EAAA,CAAE,EAAAkkC,EAAK,CAAA,CAAClkC,EAAG,GAAAyZ,C,MAGrC,IAAAiZ,EAAM5zC,EAAA4pD,EAAA,CAAA,EAANxT,EAAAt2C,EAAA8zC,EAAM,EAAA,EAXRtvB,EAAA4J,CAAA,EAWsD7M,EAAA,GAAAthB,EAAAq2C,EAAArlB,CAAA,EAAA,KAAA9C,EAAE,aAAa,CAAA,CAAA,EAXrElM,EAAA,SAAAmM,EAEY,GAAU,CACnBnM,EAAM,eAAc,EACpB+jC,GAAS,CACX,CAAC,E,6CAUe,IAAA/0B,EAAArxB,MAAAuuB,EAAE,sBAAsB,CAAA,EAA3CqH,EAAOw0B,EAAA,C,4DACLE,EAAKnqD,EAAAkqD,CAAA,EACH/T,EAAI/1C,EADN+pD,CAAK,EACHxT,EAAA12C,EAAAk2C,EAAI,EAAA,EACJiU,EAAAjqD,EADAg2C,EAAI,CAAA,EAOFkU,EAAMjqD,EANRgqD,CAAA,EAMEvT,EAAA52C,EAAAoqD,EAAM,EAAA,EAAN,EAAM,MAAN,EAAM,QAAA,GAAN,IAAAC,EAAAnqD,EAAAkqD,CAAM,EAGA1lC,EAAA2lC,EAAA,OAAAxqD,EAAA0kD,CAAQ,EAAI,GAAQhF,EAAO,KAAG,EAAlB,IAAM,CACtB,IAAA+K,EAAM1rD,GAAA,EAANo4C,EAAAh3C,EAAAsqD,EAAM,EAAA,E,YAAqB7mC,EAAAuzB,EAAAn3C,EAAA0/C,CAAM,CAAA,CAAC,IAAI,EAAxBgL,KAAA,EAAA1qD,EAAA0/C,CAAM,CAAA,CAAC,OAArB,EAAM,OAAN,EAAM,QAAAgL,IAAA,G,GAANvpC,EAAA0P,EAAA45B,CAAM,C,GAVV9lC,EAAA2lC,CAAA,E,MAAA/mC,EAAA+mC,CAAA,EAFF3lC,EAAA0lC,CAAK,EAAL,IAAAO,EAAAvqD,EAAAgqD,EAAK,CAAA,E,MAkBH,IAAAQ,EAAC5rD,GAAA,EAADq4C,EAAAn3C,EAAA0qD,EAAC,EAAA,E,iBACCv8B,EAAE,0BAAyB,CAAI,KAAItuB,EAAEmtB,CAAM,CAAA,CAAC,aAAa,KAAM,SAAQntB,EAAE2kD,CAAc,CAAA,EAAE,I,KAD3FxjC,EAAA0P,EAAAg6B,CAAC,C,+BAKC,IAAApZ,EAAG/xC,GAAA,EACD82C,EAAIl2C,EADNmxC,CAAG,EACD+F,EAAAr3C,EAAAq2C,EAAI,EAAA,EACJiE,EAAEp6C,EADFm2C,EAAI,CAAA,EACJ3xB,EAAA41B,EAAE,OAAAz6C,EACMumD,EAAW,GAAA,CAAM,OAAM,QAAO,aAAW7L,GAAI,EAAA,IAAA,CAA5B,IAAAA,MAAK16C,EAAAkyB,CAAA,CAAA,CAAL,KAAM9M,MAAMplB,EAAAkyB,CAAA,CAAA,CAAN,MAAOg5B,MAAQlrD,EAAAkyB,CAAA,CAAA,CAAR,Q,WAClC0oB,EAAE16C,EAAAirD,CAAA,EAAFvT,EAAAz3C,EAAAy6C,EAAE,EAAA,EACFC,EAAEx6C,EADFu6C,EAAE,CAAA,EACFxC,EAAA93C,EAAAu6C,CAAE,EAAUjE,EAAIv2C,EAAA+3C,CAAA,EAAJI,EAAAr4C,EAAAy2C,EAAI,EAAA,EAAhBjyB,EAAAk2B,CAAE,E,OADqBj3B,EAAAg0B,EAAA8C,EAAI,CAAA,EACvB92B,EAAAw0B,EAAA,GAAAhzB,EAAK,GAAA,GAAA,EAAA,EAAyCxB,EAAA40B,EAAA0S,EAAO,CAAA,C,YAH7DvmC,EAAA81B,CAAE,EAFJ91B,EAAA8sB,CAAG,E,iBACyBnjB,EAAE,yBAAwB,CAAI,KAAItuB,EAAE2kD,CAAc,CAAA,EAAE,IAAI,CAAA,C,GADpFxjC,EAAA0P,EAAA4gB,CAAG,C,QAUH,IAAA2Z,EAACtsD,GAAA,EAADi6C,EAAA54C,EAAAirD,EAAC,EAAA,E,iBAAe98B,EAAE,sBAAqB,CAAI,KAAItuB,EAAE2kD,CAAc,CAAA,EAAE,IAAI,CAAA,C,GAArExjC,EAAA0P,EAAAu6B,CAAC,C,UAXCprD,EAAAumD,EAAW,CAAA,CAAC,OAAMl0B,EAAA44B,CAAA,EAAA54B,EAAAwlB,EAAA,EAAA,C,mBALpB73C,EAAAmtB,CAAM,CAAA,CAAC,cAAc,WAAUkF,EAAAynB,CAAA,EAAA95C,EAI1BmtB,CAAM,CAAA,CAAC,cAAYkF,EAAAy4B,EAAA,CAAA,C,yCAmBpB,IAAA15B,EAAArxB,MAAAuuB,EAAE,oBAAoB,CAAA,EAF9BouB,GAAA8O,EAAA,C,cACU,OAAAxrD,EAAAmtB,CAAM,CAAA,CAAC,kC,2BAEL,SAAA,GACThL,GAAM,CACF,mCAAoC2kC,CAAE,EACnCx4B,EAALw4B,EAAO,wBAA6B,wBAAwB,CAAA,C,iBAMzD,IAAA11B,EAAArxB,MAAAuuB,EAAE,qBAAqB,CAAA,EAF/BouB,GAAA+O,EAAA,C,cACU,OAAAzrD,EAAAmtB,CAAM,CAAA,CAAC,qB,2BAEL,SAAA,GACThL,GAAM,CACF,sBAAuB2kC,CAAE,EACtBx4B,EAALw4B,EAAO,yBAA8B,yBAAyB,CAAA,C,mBAjB9D9mD,EAAA8lD,EAAI,GAAAzzB,EAAAi5B,CAAA,C,iBAwBD,IAAAl6B,EAAArxB,MAAAuuB,EAAE,8BAA8B,CAAA,EAFxCouB,GAAAgP,EAAA,C,cACU,OAAA1rD,EAAAmtB,CAAM,CAAA,CAAC,Y,2BAEL,SAAA,GACThL,GAAM,CACF,aAAc2kC,CAAE,EACbx4B,EAALw4B,EAAO,kCAAuC,kCAAkC,CAAA,C,GAGrF,IAAA6E,EAACtrD,EAAAqrD,EAAA,CAAA,EAADxS,EAAA/4C,EAAAwrD,EAAC,EAAA,EAADC,GAAAvrD,EAAAsrD,EAAC,CAAA,E,OAKS,IAAAv6B,EAAArxB,MAAAuuB,EAAE,wBAAwB,CAAA,EAFlCouB,GAAA7rB,EAAA,C,cACU,OAAA7wB,EAAAmtB,CAAM,CAAA,CAAC,e,2BAEL,SAAA,GACThL,GAAM,CACF,gBAAiB2kC,CAAE,EAEjBx4B,EADJw4B,EACM,4BACA,4BAA4B,CAAA,C,cATrC9mD,EAAAmtB,CAAM,CAAA,CAAC,YAAUkF,EAAAw5B,CAAA,C,GAcrB,IAAAC,EAAAzrD,EAAAurD,GAAA,CAAA,EAOEla,GAAGpxC,EAPLwrD,CAAA,EAOEC,GAAAzrD,EAAAoxC,EAAG,E,CACY,IAAAtgB,EAAArxB,MAAAuuB,EAAE,uBAAuB,CAAA,EAAtC6S,EAAK4qB,GAAA,C,0DAAqE,IAAA,OAAU,CAAE,OAAA/rD,EAAAilD,CAAa,C,EAAzB,IAAA,MAAU,EAAA,CAAExiC,EAAAwiC,EAAajqB,EAAA,EAAA,C,mBACtF,IAAA5J,EAAArxB,MAAAuuB,EAAE,wBAAwB,CAAA,EAAvC6S,EAAK6qB,EAAA,C,yDAAqE,IAAA,OAAU,CAAE,OAAAhsD,EAAAklD,CAAW,C,EAAvB,IAAA,MAAU,EAAA,CAAEziC,EAAAyiC,EAAWlqB,EAAA,EAAA,C,kBACpF,IAAA5J,EAAArxB,MAAAuuB,EAAE,iCAAiC,CAAA,EAAhD6S,EAAK8qB,EAAA,C,yDAA8E,IAAA,OAAU,CAAE,OAAAjsD,EAAAmlD,CAAS,C,EAArB,IAAA,MAAU,EAAA,CAAE1iC,EAAA0iC,EAASnqB,EAAA,EAAA,C,mBAC3F,IAAA5J,EAAArxB,MAAAuuB,EAAE,iCAAiC,CAAA,EAAhD6S,EAAK+qB,GAAA,C,yDAA8E,IAAA,OAAU,CAAE,OAAAlsD,EAAAglD,CAAK,C,EAAjB,IAAA,MAAU,EAAA,CAAEviC,EAAAuiC,EAAKhqB,EAAA,EAAA,C,IAJtGrW,EAAA+sB,EAAG,EAOH,IAAAiD,GAAMt0C,EAPNqxC,GAAG,CAAA,EAOH4H,EAAAn5C,EAAAw0C,GAAM,EAAA,EAdRhwB,EAAAmnC,CAAA,EAAA,IAAAK,GAAA9rD,EAAAyrD,EAAA,CAAA,E,CAkBQ,IAAA16B,EAAArxB,MAAAuuB,EAAE,uBAAuB,CAAA,EADjC6S,EAAAgrB,GAAA,C,iIAQG,WAAAhqC,GAAM,CACF,qBAAoBniB,EAAE4kD,CAAS,CAAA,CAAC,KAAI,GAAM,IAAI,EAAA5kD,EAChD4kD,CAAS,CAAA,CAAC,KAAI,EAAKt2B,EAAE,sBAAsB,EAAIA,EAAE,wBAAwB,CAAA,EAR7E,IAAA,OAAU,CAAE,OAAAtuB,EAAA4kD,CAAS,C,EAArB,IAAA,MAAU,EAAA,CAAEniC,EAAAmiC,EAAS5pB,EAAA,EAAA,C,0BAeZ,IAAA5J,EAAArxB,MAAAuuB,EAAE,+BAA+B,CAAA,EAFzCouB,GAAA7rB,EAAA,C,cACU,OAAA7wB,EAAAmtB,CAAM,CAAA,CAAC,gC,2BAEL,SAAA,GAAOhL,GAAM,CAAG,iCAAkC2kC,CAAE,EAAIx4B,EAAE,sBAAsB,CAAA,C,aAJ1FtuB,EAAAmtB,CAAM,CAAA,CAAC,sBAAoBkF,EAAAg6B,EAAA,C,+BA/GrB1B,KAAA,EAAA3qD,EAAAmtB,CAAM,CAAA,CAAC,cAAc,KAAO,M,EAFpC,OAAA,EAAA,QAAAw9B,IAAA,GAAAjqD,EAAA4pD,EAAAK,CAAA,G,oBAD0Br8B,EAAE,uBAAuB,MAQ/CA,EAAE,yBAAwB,CAAI,KAAItuB,EAAE2kD,CAAc,CAAA,EAAE,MAAQr2B,EAAE,yBAAyB,C,OA2D7EA,EAAE,mCAAmC,MA8BCA,EAAE,aAAa,C,GAhGnExM,EAAA,SAAAwoC,EAGY,GACTnoC,GAAM,CAAG,aAAcC,EAAM,cAAc,KAAK,EAAIkM,EAAE,uBAAuB,CAAA,CAAA,EA8ElFlM,EAAA,SAAA0pC,EAEY,GAAU,CACnB1pC,EAAM,eAAc,EACpBkkC,GAAa,CACf,CAAC,E,gDAzfFj+B,EAAI,IAAK,SAAQgK,EAAAiL,EAAA,EAsEZjV,EAAI,IAAK,YAAWgK,EAAA4gB,GAAA,CAAA,EA6FpB5qB,EAAI,IAAK,QAAOgK,EAAA0hB,GAAA,CAAA,EAAA1hB,EAAA8e,GAAA,EAAA,C,GApK3BxsB,EAAAkS,EAAG,E,0CA3CH72B,EAAAu5B,EAAO,GAAA,CAAAv5B,EAAKmtB,CAAM,EAAAkF,EAAAP,EAAA,EAAA9xB,EAEZmtB,CAAM,EAAAkF,EAAA01B,GAAA,EAAA,EAAA11B,EAAAgE,GAAA,CAAA,C,cAJT,C,uNChbR,SAAAm2B,GAAA,EAAA,EAAA,C,mBAOCh7B,EAAIzwB,EAAA8wB,CAAA,EAAJlB,EAAA3vB,EAAAwwB,CAAI,E,CACsC,IAAAJ,EAAAnwB,MAAA,kBAAA2vB,EAAA,aAAA,KAAG,EAA3CI,GAAIL,EAAA,C,yFAA6FjP,MAAAtgB,EAAA0kB,EAAA8K,EAAA,aAAA,IAAI,CAAA,E,kDAEnG,IAAAuB,EAAIvxB,GAAA,EAAJ0yB,EAAAhyB,EAAA6wB,EAAI,EAAA,EAAuCzQ,EAAA,GAAAtgB,EAAAkyB,EAAAlC,CAAA,EAAA,KAAA9C,EAAE,4BAA4B,CAAA,CAAA,EAAzEnN,EAAA0P,EAAAsB,CAAI,C,UADWvB,EAAA,aAAA,aAAe,GAACyB,EAAAP,CAAA,C,GAFnCnN,EAAA6M,CAAI,EAMJ,IAAAwL,EAAI37B,EANJmwB,EAAI,CAAA,EAMJgC,EAAAlyB,EAAA07B,EAAI,EAAA,EAAJxG,EAAAn1B,EAAA27B,EAAI,CAAA,E,uBAAoDtb,MAAAtgB,EAAAoyB,EAAA5C,EAAA,aAAA,GAAG,CAAA,E,UARpD,C,8FCLR,SAAA+7B,GAAA,EAAA,EAAA,C,QAGE,IAAI17B,EAA4BtvB,EAAAivB,EAAA,QAAA,EAAG,eAAe,EAGnD,IAAAY,EAAI9vB,GAAA,EACFywB,EAAIvwB,EADN4vB,CAAI,EACF1L,EAAAjkB,EAAAswB,EAAI,EAAA,EAAJxB,EAAA7uB,EAAAqwB,EAAI,CAAA,E,MAEF,IAAA6K,EAAIx7B,GAAA,EAAJ8xB,EAAAzxB,EAAAm7B,EAAI,EAAA,E,iBAA6B1O,EAAE,iCAAgC,CAAI,MAAKsC,EAAA,aAAe,YAAY,CAAA,C,GAAvGzP,EAAA0P,EAAAmM,CAAI,C,UADWpM,EAAA,aAAA,cAAYyB,EAAAP,CAAA,C,GAF/BnN,EAAA6M,CAAI,E,MAAJ1M,GAAA0M,EAAI,EAAAxvB,EAAQivB,EAAK,CAAA,CAAA,E,aACT3C,EAAE,iCAAgC,CAAI,MAAKsC,EAAA,aAAe,WAAW,CAAA,C,GAD7EzP,EAAA0P,EAAAW,CAAI,E,GAFG,C,+/BCJR,SAAA47B,GAAA,EAAA,EAAA,C,QAkBE,IAAM/8B,EAASC,GAAS,EAClBkT,EAAW5P,GAAc,EAazByF,EAAO,CACX/K,EAAE,oCAAoC,EACpC,CAAA,MAAOA,EAAE,+BAA+B,EAAG,KAAM,EAAI,EACrD,CAAA,MAAOA,EAAE,6BAA6B,EAAG,KAAM,EAAI,EACnD,CAAA,MAAOA,EAAE,gCAAgC,EAAG,KAAM,EAAI,C,EAGtDyL,EAAOr3B,EAAO,IAAI,EAClB62B,EAAU72B,EAAO,EAAI,EACrBqwB,EAAOrwB,EAAO,EAAK,EACnBysC,EAAQzsC,EAAO,IAAI,EACnB2qD,EAAa3qD,EAAO,EAAK,EAE7B,eAAeo3B,GAAO,CACpBrX,EAAA8W,EAAU,EAAI,EAEd,IAAM5J,EAAS,MAAM6T,EAAS,YAAO5S,EAAA,IAAW,MAAM;;;;;;;;;GAAK,CAAA,EAE3DnO,EAAA8W,EAAU,EAAK,EAEX5J,GAAMlN,EAAEsX,EAAOpK,EAAM,EAAA,CAC3B,CAEAmK,EAAI,EAEJ,IAAMwzB,EAAQ,GACZ5jC,EACG,YAAW,CAAA,CACX,UAAU,MAAM,CAAA,CAChB,QAAQ,cAAe,GAAG,CAAA,CAC1B,QAAQ,WAAY,EAAE,EAE3B,SAAS2W,GAAM,CACb5d,EAAA0sB,EAAK,CAAK,IAAK,GAAI,KAAM,EAAE,EAAA,EAAA,EAC3B1sB,EAAA4qC,EAAa,EAAK,EAClB7pB,EAAS,MAAK,CAChB,CAEA,SAASha,EAAM,EAAM,CACnB,EAAA2lB,CAAK,CAAA,CAAC,KAAOzlB,EACX/mB,EAAG0qD,CAAU,IAAA,EAAEle,CAAK,CAAA,CAAC,IAAMme,EAAK5jC,CAAI,EACxC,CAEA,eAAewB,GAAO,CACpBzI,EAAAsQ,EAAO,EAAI,EAEX,IAAMpD,EAAS,MAAM6T,EAAS,YAAO5S,EAAA,IAC/B,M;;WAIA,CAAA,IAAGjuB,EAAEwsC,CAAK,CAAA,CAAC,IAAI,KAAI,EAAI,KAAIxsC,EAAEwsC,CAAK,CAAA,CAAC,KAAK,KAAI,CAAA,C,GAIlD1sB,EAAAsQ,EAAO,EAAK,EAERpD,GAAQU,EAAO,GAAE,kBAAmBV,EAAO,mBAAmB,aAAa,KAAG,CACpF,CAEA,eAAejF,EAAQ,EAAc,CAS/B,MARe8Y,EAAS,YAAO5S,EAAA,IAE3B,MAAK,0FAAA,CACP,IAAK1E,EAAa,GAAG,CAAA,EAEzBoC,EAAE,yBAAwB,CAAI,KAAMpC,EAAa,IAAI,CAAA,CAAA,GAG7C,MAAM4N,EAAI,CACtB,CAEA,SAASyzB,EAAQ,EAAc,CAC7B,IAAM9kC,EAAO6F,EAAE,wBAAuB,CAAI,MAAOpC,EAAa,WAAW,CAAA,EAEzE,OAAOA,EAAa,aAChBoC,EAAE,gCAA+B,CAAI,QAAS7F,EAAM,MAAOyD,EAAa,YAAY,CAAA,EACpFzD,CACN,CAEA,SAAS+kC,EAAQ,EAAc,CAC7B,MAAM,CAAEthC,EAAa,cAAc,KAAS,GAAAA,EAAa,UAAU,IAAK,GAAauhC,EAAS,IAAI,CAC/F,CAAA,CAAA,OAAO,OAAO,CAAA,CACd,KAAK,IAAI,CACd,C,CAOU,IAAA1yB,EAAO,GAAA,CACd,IAAA1H,EAAMpxB,GAAA,EAAN6jB,EAAAljB,EAAAywB,EAAM,EAAA,EAA6D3R,EAAA,GAAA7e,EAAAijB,EAAAsL,CAAA,EAAA,KAAA9C,EAAE,mBAAmB,CAAA,CAAA,EAAxFxM,EAAA,QAAAuR,EAA6DgN,CAAG,EAAhElf,EAAA0P,EAAAwC,CAAM,C,EAJFjC,EAAAtuB,MAAAwrB,EAAE,qBAAqB,CAAA,EACxBmF,EAAA3wB,MAAAwrB,EAAE,oBAAoB,CAAA,EAF7ByT,GAAAlR,EAAA,C,iDAIW,U,mCAIT4Q,GAAO9Q,EAAA,C,eAAW,OAAA6S,EAAS,K,wBAGV,IAAApS,EAAAtuB,MAAAwrB,EAAE,mBAAmB,CAAA,EAASmF,EAAA3wB,MAAAwrB,EAAE,wBAAwB,CAAA,EAAvEqH,EAAO9E,EAAA,C,6EACLJ,EAAG1tB,EAAA44C,CAAA,EAAHnlB,EAAAvzB,EAAAwtB,CAAG,E,CACY,IAAAW,EAAAtuB,MAAAwrB,EAAE,oBAAoB,CAAA,EAAnC6S,EAAK3K,EAAA,C,qCAAwC,OAAA7zB,EAAAwsC,CAAK,CAAA,CAAC,I,EAAgB,QAAA,GAAU3lB,EAAMpH,EAAM,cAAc,KAAK,E,mCAEpG,IAAAgP,EAAAtuB,MAAAwrB,EAAE,mBAAmB,CAAA,EAD7B6S,EAAA1K,EAAA,C,yBAGiB,YAAAvzB,EAAAmqD,EAAa,EAAI,E,8EADjC,IAAA,OAAU,CAAE,OAAA1qD,EAAAwsC,CAAK,CAAA,CAAC,G,EAAlB,IAAA,MAAU,EAAA,CAAE,EAAAA,CAAK,CAAA,CAAC,IAAGnU,C,IAJxBrW,EAAA8L,CAAG,EAYH,IAAA,EAACztB,EAZDytB,EAAG,CAAA,EAYH6C,EAAArwB,EAAA,CAAC,EAECuuB,EAAIxuB,EAAAswB,CAAA,EAAJE,EAAA5wB,EAAA4uB,CAAI,EAAJ0J,EAAAl4B,EAAAwuB,EAAI,EAAA,EAAA,EAFN7M,EAAA,CAAC,EAID,IAAAwR,EAAGnzB,EAJH,EAAC,CAAA,EAKCuwB,EAAAtwB,EADFkzB,CAAG,EACDiF,EAAAx4B,EAAA2wB,EAAA,EAAA,EAQA8H,EAAMr4B,EARNuwB,EAAA,CAAA,EAQA+H,EAAA14B,EAAAy4B,EAAM,EAAA,EATR1W,EAAAwR,CAAG,E,uEACD,EAAA,SAAAxC,E,oBAJArF,EAAE,wBAAwB,MACW3rB,EAAAwsC,CAAK,CAAA,CAAC,KAAO7gB,EAAE,wBAAwB,MAAUA,EAAE,4BAA4B,MAMzG3rB,EAAAowB,CAAI,GAAA,CAAApwB,EAAKwsC,CAAK,CAAA,CAAC,IAAI,KAAI,GAAA,CAAAxsC,EAAOwsC,CAAK,CAAA,CAAC,KAAK,KAAI,MAGtDxsC,EAAAowB,CAAI,EAAGzE,EAAE,sBAAsB,EAAIA,EAAE,mBAAmB,MAEwBA,EAAE,sBAAsB,C,GAR1GxM,EAAA,QAAAyR,EAIUrI,CAAI,EAIdpJ,EAAA,QAAAuZ,MAAMn4B,EAA4DisC,EAAQ,IAAI,CAAA,E,yCA3BhFxsC,EAAAwsC,CAAK,GAAA9c,EAAAP,CAAA,C,sBAiCPR,GAAOT,EAAA,CAAA,CAAA,C,2BAOI,IAAAmV,EAAI,GAAA,C,iBACLnhB,EAAAmS,EAAA,OAAAr0B,EAAAo3B,CAAI,CAAA,CAAC,OAAU,GAAc7N,EAAa,KAAG,EAA9B,IAAY,C,CACL,IAAAkF,EAAAtuB,MAAA,kBAAAH,EAAAupB,CAAY,CAAA,CAAC,KAAG,EAA1CgL,GAAGrG,EAAA,C,kDACD2L,EAAEz5B,EAAAk7B,CAAA,EACA3H,EAAGrzB,EADLu5B,CAAE,EAEEgwB,GADFvpD,EAAAqzB,CACkB,EAAA,C,mBAAE,OAAA3zB,EAAAupB,CAAY,C,mBAC5B,IAAAiG,EAAI/vB,GAAA,EAAJo5B,EAAA54B,EAAAuvB,EAAI,EAAA,EAAuCzQ,EAAA,GAAA7e,EAAA24B,EAAApK,CAAA,EAAA,KAAAm8B,EAAO5qD,EAACupB,CAAY,CAAA,CAAA,CAAA,EAA/D/K,EAAA0P,EAAAsB,CAAI,C,yBAFRxN,EAAA2R,CAAG,EADL3R,EAAA6X,CAAE,EAOF,IAAAE,EAAE15B,EAPFw5B,EAAE,CAAA,EAQAmwB,GADF1pD,EAAAy5B,CACuB,EAAA,C,mBAAE,OAAA/5B,EAAAupB,CAAY,C,IADrCvH,EAAA+X,CAAE,EAGF,IAAAmB,EAAE76B,EAHF05B,EAAE,CAAA,EAIA7F,EAAG5zB,EADL46B,CAAE,EACAhZ,EAAAgS,EAAG,OAAAl0B,EACKupB,CAAY,CAAA,CAAC,MAAS,GAAMwhC,GAAI,EAAV,IAAI,CAC9B,IAAA1wB,EAAI36B,GAAA,EAAJq5B,EAAA94B,EAAAo6B,EAAI,EAAA,EAAqCtb,MAAA7e,EAAA64B,EAAAgyB,CAAI,CAAA,EAA7CvsC,EAAA0P,EAAAmM,CAAI,C,GAFRrY,EAAAkS,CAAG,EADLlS,EAAAkZ,CAAE,EAOF,IAAAU,EAAEv7B,EAPF66B,EAAE,CAAA,EAQAV,EAAIl6B,EADNs7B,CAAE,E,MACA,IAAA3C,EAAAh5B,EAAAu6B,EAAI,EAAA,EADNxY,EAAA4Z,CAAE,E,UACA,EAAAn7B,GAAA+5B,EAAI,EAAA,GAAA,KAAAlH,EAAA,CAAA,aAAA7E,CAAA,CAAA,E,aAAoB,CAAAo8B,EAAO7qD,EAACupB,CAAY,CAAA,MAAIshC,EAAO7qD,EAACupB,CAAY,CAAA,GAAKoC,EAAE,6BAA6B,C,6CAvB1G8C,EAAAtuB,MAAAwrB,EAAE,qBAAqB,CAAA,EAH/BoJ,GAAAZ,EAAA,C,cACU,OAAAuC,C,cACF,OAAA12B,EAAAo3B,CAAI,CAAA,CAAC,OAAO,M,2BAGT,O,wCA6BM,IAAA3I,EAAAtuB,MAAAwrB,EAAE,8BAA8B,CAAA,EAASmF,EAAA3wB,MAAAwrB,EAAE,6BAA6B,CAAA,EAAvFqH,EAAO9E,EAAA,C,mFACChM,EAAAwY,EAAA,OAAA16B,EAAAo3B,CAAI,CAAA,CAAC,SAAY,GAAc7N,EAAa,KAAG,EAA9B,IAAY,CACjC,IAAA6K,EAAGx0B,GAAA,EACDo7B,EAAG16B,EADL8zB,CAAG,EACD0G,EAAAx6B,EAAA06B,CAAG,E,CAC0B,IAAAvM,EAAAtuB,MAAA,kBAAAH,EAAAupB,CAAY,CAAA,CAAC,KAAG,EAA3C8E,GAAIyM,EAAA,C,iGACF/b,MAAA7e,EAAAk5B,EAAAp5B,EAAAupB,CAAY,CAAA,CAAC,IAAI,CAAA,E,+BAEnB,IAAAqR,EAAIv6B,EAAAy6B,EAAA,CAAA,EACFY,EAAIp7B,EADNs6B,CAAI,EACFtB,EAAAr5B,EAAAy7B,EAAI,EAAA,EAAJnC,EAAAl5B,EAAAq7B,CAAI,EADN1Z,EAAA4Y,CAAI,EAJN5Y,EAAAgZ,CAAG,EAYH,IAAAhC,EAAM34B,EAZN26B,EAAG,CAAA,EAYHf,EAAAh6B,EAAA+4B,EAAM,EAAA,EAbRhX,EAAAoS,CAAG,E,UAM2BnT,EAAAqY,EAAAt5B,EAAAupB,CAAY,CAAA,CAAC,GAAG,E,8BACxCoC,EAAE,gCAA+B,CAChC,IAAKsG,GAAGjyB,EAACupB,CAAY,CAAA,CAAC,UAAU,EAChC,QAASoC,EAAE,wBAAuB,CAAI,MAAK3rB,EAAEupB,CAAY,CAAA,CAAC,WAAW,CAAA,C,OAIeoC,EAAE,uBAAuB,C,GAAlHxM,EAAA,QAAA6Z,MAAiEjR,EAAO/nB,EAACupB,CAAY,CAAA,CAAA,EAbvF/K,EAAA0P,EAAAkG,CAAG,C,4CAHLp0B,EAAAo3B,CAAI,CAAA,CAAC,SAAS,QAAM1H,EAAAqE,CAAA,C,mBApCtB/zB,EAAA42B,CAAO,GAAA,CAAA52B,EAAKo3B,CAAI,EAAA1H,EAAAgE,CAAA,EAAA1zB,EAEXo3B,CAAI,GAAA1H,EAAAuE,EAAA,CAAA,C,gDA9CR,C,iPCrHR,SAAAk3B,GAAA,EAAA,EAAA,CAMC,IAAAr9B,EAAG/sB,GAAA,EAAHmhB,EAAA4L,EAAG,OAAAG,EAAA,OACe,GAAOgZ,EAAM,OAAK,EAAlB,IAAK,C,uBAEjB5Y,GAAIH,EAAA,C,SAAK,OAAAhtB,EAAA+lC,CAAK,CAAA,CAAC,E,iDACbpY,EAAI5tB,EAAAw+B,CAAA,EAAJtc,EAAAhiB,EAAA0tB,EAAI,EAAA,EACJW,EAAIpuB,EADJytB,EAAI,CAAA,EACJ8B,EAAAxvB,EAAAquB,EAAI,EAAA,E,OADuBvO,EAAAkC,EAAAjiB,EAAA+lC,CAAK,CAAA,CAAC,KAAK,EACZhmB,EAAA0P,EAAAzvB,EAAA+lC,CAAK,CAAA,CAAC,KAAK,C,yCAGvC,IAAAzT,EAAG1yB,GAAA,EACDu5B,EAAIh5B,EADNmyB,CAAG,EACD3C,EAAA1vB,EAAAk5B,EAAI,EAAA,EACJG,EAAIp5B,EADJi5B,EAAI,CAAA,EACJ9B,EAAAp3B,EAAAq5B,EAAI,EAAA,EAFNxY,EAAAwR,CAAG,E,OAC0BvS,EAAA4P,EAAA3vB,EAAA+lC,CAAK,CAAA,CAAC,KAAK,EACZhmB,EAAAsX,EAAAr3B,EAAA+lC,CAAK,CAAA,CAAC,KAAK,C,GAFvCzoB,EAAA0P,EAAAsF,CAAG,C,UANDtyB,EAAA+lC,CAAK,CAAA,CAAC,GAAEvX,EAAAP,CAAA,EAAAO,EAAAwF,EAAA,EAAA,C,YAFhBlT,EAAA8L,CAAG,EAAHtP,EAAA0P,EAAAJ,CAAG,CAFI,C,85GCJR,SAAAk/B,GAAA,EAAA,EAAA,C,QAqrBU,IAAAC,GAAM,EAAC,EAAM9pD,IAAA,C,CAIb,IAAAsrB,EAAArrB,MAAAuoB,EAAE,+BAA8B,CAAI,KAAM9E,EAAMqmC,EAAM,CAAA,CAAA,CAAA,CAAA,EAClDp8B,EAAA1tB,MAAAC,EAAA+sB,CAAI,GAAI+8B,GAAUD,EAAM,CAAA,GAAK,EAAO7pD,EAACkmB,CAAY,CAAA,CAAC,UAAU,EAJvEiwB,GAAAtrB,EAAA,C,YACQ,OAAAg/B,EAAM,CAAA,CAAC,I,gBACL,OAAA7pD,EAAA+pD,CAAW,C,sDAGT,SAAA,GAAWC,GAAQH,EAAM,EAAEl2B,CAAM,C,KAItCs2B,GAAQ,EAAC,EAAMnqD,IAAA,C,wBAEpB,IAAAutB,EAAApvB,GAAA,EAAAqvB,EAAAptB,EAAAmtB,EAAA,EAAA,E,UAAA,EAAA,SAAAjC,E,aAGWprB,EAAA+sB,CAAI,GAAI,EAAO/sB,EAACkmB,CAAY,CAAA,CAAC,eAGtCoC,EAAE,iCAAiC,C,GANrCxM,EAAA,QAAAuR,MAIgBmd,GAAOqf,EAAM,CAAA,CAAA,EAJ7B1uC,EAAA0P,EAAAwC,CAAA,C,UADEw8B,EAAM,CAAA,CAAC,SAAOx9B,EAAAP,CAAA,C,GAUlB,IAAAyB,EAAAptB,EAAAwqB,EAAA,CAAA,EAAA6C,EAAAttB,EAAAqtB,EAAA,EAAA,E,YAAA,EAAA,SAAAnC,EAAA/N,EAAAkQ,EAAA,QAAAE,CAAA,E,aAGWztB,EAAA+sB,CAAI,GAAI+8B,GAAUD,EAAM,CAAA,MAC3BC,GAAUD,EAAM,CAAA,EAAIvhC,EAAE,kCAAkC,EAAI,SAGlEuhC,EAAM,CAAA,CAAC,QAAUvhC,EAAE,+BAA+B,EAAIA,EAAE,6BAA6B,C,GAPvFxM,EAAA,QAAAyR,MAKgB+M,GAAOuvB,EAAM,CAAA,CAAA,E,QA7rB1BxnC,EAA4BjiB,EAAAwqB,EAAA,OAAA,EAAG,IAAI,EAExBN,GAAS,EACxB,IAAMkT,EAAW5P,GAAc,EAEzBs8B,EAAQ,CAAI,QAAS,QAAQ,EA0B7B92B,EAAM,CACT,CAAA,MAAO9K,EAAE,yBAAyB,CAAA,EAClC,CAAA,SAAUA,EAAE,4BAA4B,CAAA,EACxC,CAAA,UAAWA,EAAE,6BAA6B,CAAA,C,EAGzCpC,EAAe7lB,EAAO,IAAI,EAC1Bq+C,EAAWr+C,EAAMC,EAAA,CAAA,CAAA,CAAA,EACjB6pD,EAAY9pD,EAAMC,EAAA,CAAA,CAAA,CAAA,EAChB8pD,OAAI,CAAY,SAAU,GAAI,UAAW,GAAI,QAAS,GAAI,aAAc,EAAE,GAE5EC,EAAUhqD,EAAMC,EAAC8pD,EAAI,CAAA,CAAA,EACrB72B,EAAUlzB,EAAO,EAAI,EACrB0sB,EAAO1sB,EAAO,EAAK,EACnBq9B,EAASr9B,EAAO,IAAI,EACpBmzB,EAAOnzB,EAAO,KAAK,EACnBiqD,EAASjqD,EAAO,EAAE,EAClBqnD,EAAOrnD,EAAO,EAAE,EAChB09B,EAAU19B,EAAO,IAAI,EAEzB,eAAeyzB,GAAO,CACpBrX,EAAA8W,EAAU,EAAI,EAEd,IAAM5J,EAAS,MAAM6T,EAAS,YAAO5S,EAAA,IAAW,MAAM;;;;;;;;;;;;;;;;;;;;;;IAAK,CAAI,IAAGA,EAAA,eAAA,CAAA,CAAA,EAElEnO,EAAA8W,EAAU,EAAK,EAEV5J,IAELlN,EAAAyJ,EAAeyD,EAAO,aAAY,EAAA,EAClClN,EAAAiiC,EAAW/0B,EAAO,eAAc,EAAA,EAChClN,EAAA0tC,EAAYxgC,EAAO,UAAS,EAAA,EAE1B3pB,EAAEkmB,CAAY,GAAAzJ,EAAE6tC,EAAMtqD,EAAGkmB,CAAY,CAAA,CAAC,KAAI,EAAA,EAC9C,CAEA4N,EAAI,EAEJ,IAAMi2B,EAAWhqD,OAAAC,EAAakmB,CAAY,CAAA,EAAE,OAAK,CAAA,EAAA,CAAQ,IAAK,GAAI,CAAMzD,EAAMA,CAAI,CAAA,CAAA,EAE5E8nC,EAAOxqD,MACX,OAAO,aAAWC,EACfkmB,CAAY,CAAA,EAAE,OAAK,CAAA,EAAA,CAAQ,IAAK,GAAI,CACnCzD,EACAziB,EAAAkmB,CAAY,CAAA,CAAC,QAAQ,OAAQ,GAAW2jC,EAAO,OAASpnC,CAAI,CAAA,CAAE,M,KAK9D2X,GAAKr6B,OAAAC,EACRkmB,CAAY,CAAA,EAAE,SAAO,CAAA,EAAA,CACnB,OAAQ,GAAMlmB,EACbwzB,CAAI,IAAK,SAAWq2B,EAAO,OAAS,SAAO,CAAKA,EAAO,QAAU7pD,EAAAwzB,CAAI,IAAK,WAAYq2B,EAAO,OAAc,CAAA,CAE5G,UACE,EAAG,IACF,OAAO1+B,EAAE,OAAO,EAAI,OAAO4O,EAAE,OAAO,GACpC,OAAOA,EAAE,OAAS,OAAO,EAAI,OAAO5O,EAAE,OAAS,OAAO,GACtD3H,EAAM2H,CAAC,CAAA,CAAE,cAAc3H,EAAMuW,CAAC,CAAA,CAAA,CAAA,EAIhCywB,IAAY,EAAO,IAAMxqD,EAC7BkmB,CAAY,CAAA,CAAC,eACToC,EAAEtB,EAAM,CAAI,aAAYhnB,EAAEkmB,CAAY,CAAA,CAAC,KAAM,MAAKlmB,EAAEkmB,CAAY,CAAA,CAAC,c,GACjEoC,EAAEmiC,EAAK,CAAI,aAAYzqD,EAAEkmB,CAAY,CAAA,CAAC,IAAI,CAAA,EAE1CwkC,GAAM3qD,MAAAC,EACVkmB,CAAA,E,EAGQ,MAAOoC,EAAE,8BAA6B,CAAI,MAAKtoB,EAAEkmB,CAAY,CAAA,CAAC,WAAW,CAAA,EACzE,MAAKlmB,EAAEkmB,CAAY,CAAA,CAAC,W,GAGpB,MAAOoC,EAAE,6BAA4B,CAAI,MAAKtoB,EAAEkmB,CAAY,CAAA,CAAC,UAAU,CAAA,EACvE,MAAKlmB,EAAEkmB,CAAY,CAAA,CAAC,U,GAEpB,MAAOoC,EAAE,iCAAiC,EAAG,MAAKtoB,EAAEkmB,CAAY,CAAA,CAAC,Y,GACjE,MAAOoC,EAAE,iCAAiC,EAAG,MAAKtoB,EAAEkmB,CAAY,CAAA,CAAC,c,OAKrEwvB,EAAK31C,MAAAC,EACTkmB,CAAA,E,EAEQ,KAAMoC,EAAE,wBAAwB,EAAG,MAAKtoB,EAAEkmB,CAAY,CAAA,CAAC,IAAK,KAAM,E,GAClE,KAAMoC,EAAE,uBAAuB,EAAG,MAAKtoB,EAAEkmB,CAAY,CAAA,CAAC,KAAM,KAAM,E,GAClE,KAAMoC,EAAE,mCAAmC,EAAG,MAAK,gBAAAtoB,EAAkBkmB,CAAY,CAAA,CAAC,MAAO,KAAM,E,GAC/F,KAAMoC,EAAE,4BAA4B,EAAG,MAAOsG,GAAG5uB,EAACkmB,CAAY,CAAA,CAAC,SAAS,C,OAKlF,SAAS1C,EAAM,EAAQ,CACrB,OAAOqmC,EAAO,QAAWA,EAAO,WAAaA,EAAO,MAAM,WAAcA,EAAO,MAAM,UACvF,CAEA,SAASC,GAAU,EAAQ,CACzB,OAAOD,EAAO,OAAS,SAAO,CAAKA,EAAO,SAAO7pD,EAAIkmB,CAAY,CAAA,CAAC,aAAe,CACnF,CAEA,SAASykC,EAAO,EAAQ,CAYtB,OAXId,EAAO,QAAgBvhC,EAAE,8BAA6B,CAAI,KAAMwG,GAAM+6B,EAAO,SAAS,CAAA,CAAA,EAEtFA,EAAO,QACFA,EAAO,UACVvhC,EAAE,iCAAgC,CAChC,KAAMwG,GAAM+6B,EAAO,SAAS,EAC5B,GAAIA,EAAO,UAAU,U,GAEvBvhC,EAAE,8BAA6B,CAAI,KAAMwG,GAAM+6B,EAAO,SAAS,CAAA,CAAA,EAG9DvhC,EAAEuhC,EAAO,YAAc,qCAAuC,4BACnE,CAAA,IAAKj7B,GAAIi7B,EAAO,SAAS,CAAA,C,CAE7B,CAEA,eAAee,GAAI,EAAO,EAAW,EAAQ,CAC3CnuC,EAAAsQ,EAAO,EAAI,EAEX,IAAMpD,EAAS,MAAM6T,EAAS,YAAO5S,EAAA,IAAW,MAAMzE,EAAOoD,CAAS,EAAGwE,CAAM,EAM/E,OAJAtR,EAAAsQ,EAAO,EAAK,EAERpD,GAAQ,MAAMmK,EAAI,EAEfnK,CACT,CAEA,SAASkhC,IAAa,CACpBpuC,EAAAihB,EAAM,CAAK,MAAO,GAAI,KAAM,QAAQ,EAAA,EAAA,EACpCjhB,EAAAshB,EAAU,IAAI,EACdP,EAAS,MAAK,CAChB,CAEA,eAAenD,IAAM,CACnB,IAAMiE,EAAKt+B,EAAG09B,CAAM,CAAA,CAAC,MAAM,KAAI,EAE/BjhB,EAAAshB,EAAU,IAAI,EAEd,IAAMpU,EAAS,MAAMihC,G;;S,CAIjB,aAAY5qD,EAAEkmB,CAAY,CAAA,CAAC,IAAK,QAAO,KAAIlmB,EAAE09B,CAAM,CAAA,CAAC,I,EACtDpV,EAAE,+BAA8B,CAAI,QAAO,KAAItoB,EAAE09B,CAAM,CAAA,CAAC,IAAI,CAAA,C,EAGzD/T,IAELlN,EAAAihB,EAAS,IAAI,EAEX,CAAG/T,EAAO,UAAU,WAAaA,EAAO,UAAU,KAAGlN,EAAEshB,EAAUpU,EAAO,UAAU,IAAG,EAAA,EACzF,CAEA,SAASqgC,GAAQ,EAAQ,EAAQ,CAC/BY,G;;S,CAII,aAAY5qD,EAAEkmB,CAAY,CAAA,CAAC,IAAK,KAAM2jC,EAAO,MAAM,KAAM,KAAMl2B,C,EACjErL,EAAE,gCAA+B,CAAI,KAAM9E,EAAMqmC,CAAM,EAAG,KAAMl2B,CAAM,CAAA,C,CAE1E,CAEA,SAAS2G,GAAO,EAAQ,CACtB,IAAM5F,EAAWm1B,EAAO,QACpBvhC,EAAE,kCAAiC,CAAI,KAAM9E,EAAMqmC,CAAM,CAAA,CAAA,EACzDvhC,EAAE,gCAA+B,CAAI,KAAM9E,EAAMqmC,CAAM,EAAG,aAAY7pD,EAAEkmB,CAAY,CAAA,CAAC,IAAI,CAAA,EAExF,QAAQwO,CAAQ,GAErBk2B,G;;S,CAII,aAAY5qD,EAAEkmB,CAAY,CAAA,CAAC,IAAK,KAAM2jC,EAAO,MAAM,I,EACrDA,EAAO,QACHvhC,EAAE,iCAAgC,CAAI,KAAM9E,EAAMqmC,CAAM,CAAA,CAAA,EACxDvhC,EAAE,+BAA8B,CAAI,KAAM9E,EAAMqmC,CAAM,EAAG,aAAY7pD,EAAEkmB,CAAY,CAAA,CAAC,IAAI,CAAA,C,CAEhG,CAEA,SAASskB,GAAO,EAAQ,CACtBogB,G;;S,CAII,aAAY5qD,EAAEkmB,CAAY,CAAA,CAAC,IAAK,KAAM2jC,EAAO,MAAM,I,EACrDvhC,EAAE,8BAA6B,CAAI,KAAM9E,EAAMqmC,CAAM,CAAA,CAAA,C,CAEzD,CAEA,SAAS9I,GAAU,EAAO,EAAQ,CAChC,OAAO6J,G;;SAIH,CAAA,IAAG5qD,EAAEkmB,CAAY,CAAA,CAAC,IAAK,OAAK,EAC9B6H,C,CAEJ,CAEA,IAAM+8B,GAAM/qD,OAAAC,EAAakmB,CAAY,CAAA,EAAE,OAAK,CAAA,EAAA,CAAQ,OAAQ,GAAI,CAAMgkC,EAAS,SAASznC,CAAI,CAAA,CAAA,EAE5F,eAAesoC,IAAU,CACvB,IAAMp3B,EAAM3zB,EAAG0nD,CAAI,CAAA,CAAC,KAAI,CAAA,CAAG,YAAW,EAEjC/zB,GAGH,MAAMotB,GAAS,CAAA,GAAA/gD,EACT8qD,EAAM,EAAEn3B,CAAM,EAClBrL,EAAE,kCAAiC,CAAI,aAAYtoB,EAAEkmB,CAAY,CAAA,CAAC,KAAM,KAAMyN,CAAM,CAAA,CAAA,GAAAlX,EAGtFirC,EAAO,EAAE,CACb,CAEA,SAASsD,GAAS,EAAM,CACtBjK,GAAS/gD,EACP8qD,EAAM,CAAA,CAAC,OAAQ,GAAS57B,IAASzM,CAAI,EACrC6F,EAAE,oCAAmC,CAAI,aAAYtoB,EAAEkmB,CAAY,CAAA,CAAC,KAAM,KAAMzD,CAAI,CAAA,CAAA,CAExF,CAEA,SAASwoC,IAAS,CAChBL,G;;SAII,CAAA,IAAG5qD,EAAEkmB,CAAY,CAAA,CAAC,IAAK,KAAIlmB,EAAEsqD,CAAM,CAAA,CAAC,KAAI,CAAA,EAC1ChiC,EAAE,4BAA4B,C,CAElC,CAEA,IAAM2vB,GAAS,GACb,OAAO,QAAQiT,GAAG,CAAA,CAAA,CAAA,CACf,KAAG,CAAG9rB,EAAO3c,KAAI,GAAS2c,EAAK,KAAM3c,GAAI,CAAA,CACzC,KAAK;CAAI,EAERiM,GAAU,GACd,OAAO,YACL5O,EACG,MAAM;CAAI,CAAA,CACV,IAAK,GAAS4hC,EAAK,MAAM,GAAG,CAAA,CAAA,CAC5B,OAAQ,GAAUyJ,EAAM,SAAW,GAAKA,EAAM,EAAC,CAAE,KAAI,GAAMA,EAAM,EAAC,CAAE,KAAI,CAAA,CAAA,CACxE,KAAG,CAAG/rB,EAAO3c,KAAI,CAAO2c,EAAM,KAAI,EAAI3c,EAAK,KAAI,CAAA,CAAA,CAAA,EAGhD2oC,GAAQrrD,MAAAC,EACZmqD,CAAS,CAAA,CAAC,OAAQ,GAAQ,CAAM1C,EAAS,YAAY,CAAA,EAGvD,SAAS4D,GAAa,EAAK,CACzB,IAAM5oC,EAAIziB,EAAGkmB,CAAY,CAAA,CAAC,UAAU,KAAM,GAAauhC,EAAS,MAAQlsC,CAAG,E,EAE3E8uC,E,CACE,SAAU9uC,EACV,UAAWkH,GAAM,WAAa,GAC9B,QAASw1B,GAAMx1B,GAAM,OAAO,EAC5B,aAAcA,GAAM,cAAgB,E,KAExC,CAEA,SAAS6oC,IAAW,CAClBV,G;;;;S,CAOI,IAAG5qD,EAAEqqD,CAAO,CAAA,CAAC,SACb,aAAYrqD,EAAEkmB,CAAY,CAAA,CAAC,IAC3B,UAASlmB,EAAEqqD,CAAO,CAAA,CAAC,UAAU,KAAI,GAAM,KACvC,QAAS37B,GAAM1uB,EAACqqD,CAAO,CAAA,CAAC,OAAO,EAC/B,aAAYrqD,EAAEqqD,CAAO,CAAA,CAAC,cAAgB,I,EAExC/hC,EAAE,qCAAqC,CACvC,CAAA,CAAA,KAAM,GAAW,CACbqB,GAAMlN,EAAE4tC,EAAUD,EAAI,EAAA,EAAA,CAC5B,CAAC,CACH,CAEA,SAASmB,GAAS,EAAU,CAEvB,QACCjjC,EAAE,mCAAkC,CAAI,SAAUm/B,EAAS,KAAM,aAAYznD,EAAEkmB,CAAY,CAAA,CAAC,IAG9F,CAAA,CAAA,GAEF0kC,GAAG,2GAAA,CAEC,IAAKnD,EAAS,GAAG,EACnBn/B,EAAE,qCAAoC,CAAI,SAAUm/B,EAAS,IAAI,CAAA,CAAA,CAErE,CAEA,SAAS+D,GAAU,EAAK,CACtBZ,G;;SAII,CAAA,IAAG5qD,EAAEkmB,CAAY,CAAA,CAAC,IAAK,OAAQ3K,CAAG,EACpC+M,EAAE,4BAA4B,C,CAElC,CAEA,eAAew5B,IAAU,CAClB,QAAQ0I,GAAS,iCAAkC,uCAAuC,CAAA,GAE/F,MAAMI,GAAG,0FAAA,CAEL,IAAG5qD,EAAEkmB,CAAY,CAAA,CAAC,GAAG,EACvBoC,EAAE,gCAA+B,CAAI,aAAYtoB,EAAEkmB,CAAY,CAAA,CAAC,IAAI,CAAA,CAAA,CAExE,CAEA,SAASxB,IAAU,CACjBkmC,GAAG,0FAAA,CAEC,IAAG5qD,EAAEkmB,CAAY,CAAA,CAAC,GAAG,EACvBoC,EAAE,gCAA+B,CAAI,aAAYtoB,EAAEkmB,CAAY,CAAA,CAAC,IAAI,CAAA,CAAA,CAExE,C,CAIO,IAAAkF,EAAArrB,MAAAC,EAAAkmB,CAAY,CAAA,EAAE,MAAQoC,EAAE,oBAAoB,CAAA,EAC/CmF,EAAA1tB,MAAAC,EAAAkmB,CAAY,CAAA,EAAE,GAAG,EACbwH,EAAA3tB,OAAA,CAAA,GAAI,iBAAkB,MAAOuoB,EAAE,mBAAmB,CAAA,EAAA,EACpDqF,EAAA5tB,MAAAC,EAAAkmB,CAAA,EACFlmB,EAAAkmB,CAAY,CAAA,CAAC,WACXoC,EAAE,6BAA4B,CAAI,KAAMwG,GAAK9uB,EAACkmB,CAAY,CAAA,CAAC,UAAU,CAAA,CAAA,EACrEoC,EAAE,oBAAmB,CAAI,IAAGtoB,EAAEkmB,CAAY,CAAA,CAAC,GAAG,CAAA,EAChD,IAAI,EART6V,GAAAlR,EAAA,C,kIAUE4Q,GAAOrL,EAAA,C,eAAW,OAAAoN,EAAS,K,uBAGzBlS,GAAOT,EAAA,CAAA,CAAA,C,QAEP,IAAAH,EAACtsB,GAAA,EAAD82B,EAAA30B,EAAAmqB,CAAC,EACCM,G,GAAI,EAAA,C,mDAAsBtP,EAAA,GAAAjb,EAAA20B,EAAAhK,CAAA,EAAA,KAAA9C,EAAE,kBAAkB,CAAA,CAAA,E,+BADhD3J,EAAA+L,CAAC,E,2BAAepC,EAAE,uBAAsB,CAAI,IAAGsC,EAAA,eAAA,CAAA,C,GAA/CzP,EAAA0P,EAAAH,CAAC,C,gCAIC,IAAAD,EAAGpsB,GAAA,EACDmtB,EAAIjrB,EADNkqB,CAAG,EACD6K,EAAAp1B,EAAAsrB,EAAI,EAAA,EACJ6J,EAAMl1B,EADNqrB,EAAI,CAAA,EACJgK,EAAAt1B,EAAAm1B,EAAM,EAAA,EAFR1W,EAAA8L,CAAG,E,iBAED,EAAM,SAAAzqB,EAA4C+sB,CAAI,E,aADhDzE,EAAE,8BAA6B,CAAI,IAAKsG,GAAG5uB,EAACkmB,CAAY,CAAA,CAAC,UAAU,CAAA,CAAA,MACEoC,EAAE,sBAAsB,C,GAAnGxM,EAAA,QAAAuZ,EAAiE3Q,EAAO,EAF1EvJ,EAAA0P,EAAAJ,CAAG,C,UADDzqB,EAAAkmB,CAAY,CAAA,CAAC,YAAUmG,EAAAuE,CAAA,C,sBAQzB,IAAAT,EAAG7xB,GAAA,EAAHo3B,EAAAx1B,EAAAiwB,EAAG,EAAA,E,iBACD7H,EAAE,yBAAwB,CAAI,aAAYtoB,EAAEkmB,CAAY,CAAA,CAAC,IAAI,CAAA,C,GAD/D/K,EAAA0P,EAAAsF,CAAG,C,UADA,CAAAnwB,EAAAkmB,CAAY,CAAA,CAAC,YAAUlmB,EAAIkmB,CAAY,CAAA,CAAC,aAAe,GAACmG,EAAA6D,CAAA,C,gBAM7D43B,GAAK92B,EAAA,C,aAAE,OAAAhxB,EAAA0qD,EAAM,C,uBAGX,IAAAp6B,EAAG/xB,GAAA,EACD4tB,EAAI5rB,EADN+vB,CAAG,EACDsF,EAAA11B,EAAAisB,EAAI,EAAA,EACJ5K,EAAIphB,EADJgsB,EAAI,CAAA,EACJ4J,EAAA71B,EAAAqhB,EAAI,EAAA,EAFN5C,EAAA2R,CAAG,E,aAEyC1S,EAAAmY,EAAA/1B,EAAA+9B,CAAO,CAAA,C,EADvB,KAAAzV,EAAE,8BAA8B,CAAA,C,EAD5DnN,EAAA0P,EAAAyF,CAAG,C,UADDtwB,EAAA+9B,CAAO,GAAA1R,EAAA8J,CAAA,C,iBAQc,IAAA/K,EAAArrB,MAAA,kBAAAC,EAAAkmB,CAAY,CAAA,CAAC,KAAG,EAEjCuH,EAAA1tB,MAAAuoB,EAAE,0BAA0B,CAAA,E,SAEhC,CAAA,KAAM,GAAIA,EAAE,4BAA4B,CAAA,EACxC,CAAA,UAAW,WAAYA,EAAE,4BAA4B,CAAA,EACrD,CAAA,QAAS,SAAUA,EAAE,0BAA0B,CAAA,EAC/C,CAAA,WAAY,YAAaA,EAAE,6BAA6B,CAAA,EACxD,CAAA,UAAW,WAAYA,EAAE,4BAA4B,CAAA,C,GATzDoe,GAAA/P,EAAA,C,mCAEE,OAAAtU,EAAI,C,sDAWN,IAAAwO,EAAG1wB,EAAAw2B,EAAA,CAAA,EAAHG,GAAAv2B,EAAAswB,CAAG,E,0BAEoB,IAAAzF,EAAArrB,MAAAuoB,EAAE,gCAAgC,CAAA,EAASmF,EAAA1tB,MAAAuoB,EAAE,8BAA8B,CAAA,EAA9FqH,EAAO0H,EAAA,C,0EAEE,IAAAjM,EAAArrB,MAAAuoB,EAAE,gCAAgC,CAAA,EACjCmF,EAAA1tB,MAAAC,EAAAkmB,CAAY,CAAA,CAAC,cAAc,KAAO,EAAE,E,SAChC,CAAA,GAAIoC,EAAE,mCAAmC,CAAA,EAAO,GAAAtoB,EAAA0+C,CAAQ,CAAA,CAAC,IAAK,GAAM,CAAMhF,EAAO,IAAKA,EAAO,IAAI,CAAA,C,GAH7GvD,GAAAtrB,EAAA,C,2FAIW,OAAA7qB,EAAA+sB,CAAI,C,EACJ,SAAAy+B,E,0CAIM,IAAApgC,EAAArrB,MAAAuoB,EAAE,mCAAmC,CAAA,EAAxDqH,EAAO8H,EAAA,C,4DACL1G,EAAG9wB,EAAAw/B,CAAA,EAAH3H,EAAAv3B,EAAAwwB,CAAG,E,WAEK/wB,EAAAkmB,CAAY,CAAA,CAAC,UAAa,GAAUuhC,EAAS,KAAnB,EAAA,IAAQ,CACtC,IAAA9vB,EAAGn5B,GAAA,EACDw5B,EAAGz3B,EADLo3B,CAAG,EAECX,EAAIz2B,EADNy3B,CAAG,EACD/B,EAAA/1B,EAAA82B,EAAI,EAAA,EACJG,EAAIh3B,EADJ62B,EAAI,CAAA,EACJd,EAAAh2B,EAAAi3B,EAAI,EAAA,EAFNxY,EAAAqZ,CAAG,EAaH,IAAAqI,EAAGlgC,EAbH63B,EAAG,CAAA,EAcDrC,EAAMp1B,EADR8/B,CAAG,EACDzJ,EAAA12B,EAAAy1B,EAAM,EAAA,EACNK,EAAM71B,EADNw1B,EAAM,CAAA,EACNkB,EAAA32B,EAAA81B,EAAM,EAAA,EAFRrX,EAAA0hB,CAAG,EAdL1hB,EAAAgZ,CAAG,E,YAE2B/Z,EAAAqY,EAAAj2B,EAAAynD,CAAQ,CAAA,CAAC,IAAI,E,OAavC,EAAM,SAAAznD,EAA4C+sB,CAAI,E,OACtD,EAAM,SAAA/sB,EAAsD+sB,CAAI,E,aAZ9DzE,EAAE,mCAAkC,CACnC,QAAS,OAAO,KAAItoB,EAACynD,CAAQ,CAAA,CAAC,OAAO,CAAA,CAAE,OACnC,OAAO,QAAOznD,EAACynD,CAAQ,CAAA,CAAC,OAAO,CAAA,CAC5B,KAAG,CAAGroB,EAAO3c,KAAI,GAAS2c,EAAK,KAAM3c,GAAI,CAAA,CACzC,KAAK,IAAI,EACZ6F,EAAE,0CAA0C,EAChD,KAAItoB,EAAEynD,CAAQ,CAAA,CAAC,cAAgB,Q,OAKkEn/B,EAAE,8BAA8B,MAElIA,EAAE,mCAAmC,C,GAFvCxM,EAAA,QAAA6Z,MAAuE01B,GAAYrrD,EAACynD,CAAQ,CAAA,CAAC,GAAG,CAAA,EAChG3rC,EAAA,QAAAka,MAAiFu1B,GAAQvrD,EAACynD,CAAQ,CAAA,CAAA,EAhBtGtsC,EAAA0P,EAAA8M,CAAG,C,MAsBH,IAAApC,EAAC92B,GAAA,EAADw4B,EAAA/2B,EAAAq1B,EAAC,EAAA,EACC7Z,EAAA,GAAAjb,EAAAw2B,EAAA7L,CAAA,EAAA,KAAA9C,EAAE,sCAAsC,CAAA,CAAA,EAD1CnN,EAAA0P,EAAA0K,CAAC,C,uBAQM,IAAAnK,EAAArrB,MAAAuoB,EAAE,uCAAuC,CAAA,E,SAE5C,CAAA,GAAIA,EAAE,uCAAuC,CAAA,EAC3C,GAAAtoB,EAAAorD,EAAQ,CAAA,CAAC,IAAK,GAAQ,CAAM3D,EAAS,IAAKA,EAAS,IAAI,CAAA,C,GAL7DtR,GAAAtrB,EAAA,C,4DAOW,SAAAwgC,E,aARTrrD,EAAAorD,EAAQ,CAAA,CAAC,QAAM,CAAAprD,EAAKqqD,CAAO,CAAA,CAAC,UAAQh+B,EAAA0K,CAAA,C,GA9B1CpY,EAAAoS,CAAG,EAAH,IAAA2O,EAAAv/B,EAAA4wB,EAAG,CAAA,E,MA4CD,IAAAyP,EAAG9hC,GAAA,EACD64B,EAAIh3B,EADNigC,CAAG,EACDpJ,EAAAl3B,EAAAq3B,EAAI,EAAA,EAGJiU,EAAGrrC,EAHHo3B,EAAI,CAAA,EAGJoI,EAAAp/B,EAAAirC,CAAG,E,CACY,IAAApgB,EAAArrB,MAAAuoB,EAAE,sCAAsC,CAAA,EAArD6S,EAAKwE,EAAA,C,8CAAmD,IAAA,OAAU,CAAE,OAAA3/B,EAAAqqD,CAAO,CAAA,CAAC,S,EAApB,IAAA,MAAU,EAAA,CAAE,EAAAA,CAAO,CAAA,CAAC,UAASr1B,C,kBAE7E,IAAA5J,EAAArrB,MAAAuoB,EAAE,uCAAuC,CAAA,E,SAErC,CAAA,GAAI,QAAQ,EAAM,GAAAtoB,EAAA+pD,CAAW,CAAA,CAAC,QAAM,CAAGtnC,KAAUA,IAAS,QAAQ,C,GAH9E0zB,GAAAtW,EAAA,C,qCAEQ,OAAA7/B,EAAAqqD,CAAO,CAAA,CAAC,Y,6BAEJ,SAAA,GAAM,EAAMA,CAAO,CAAA,CAAC,aAAe12B,C,GANjDhV,EAAA6sB,CAAG,EASH,IAAArW,EAAKh1B,EATLqrC,EAAG,CAAA,EAUDnT,EAAI93B,EADN40B,CAAK,EACHqC,EAAAt3B,EAAAm4B,EAAI,EAAA,EACJ4G,EAAA9+B,EADAk4B,EAAI,CAAA,EACJha,GAAA4gB,CAAA,EAMA,IAAAW,EAACz/B,EAND8+B,EAAA,CAAA,EAMArH,EAAA13B,EAAA0/B,EAAC,EAAA,EARHjhB,EAAAwW,CAAK,EAUL,IAAAsW,EAAGtrC,EAVHg1B,EAAK,CAAA,EAWHoK,EAAMh/B,EADRkrC,CAAG,EACDvT,EAAAh4B,EAAAq/B,EAAM,EAAA,EACNC,EAAAr/B,EADAo/B,EAAM,CAAA,EACNnH,EAAAl4B,EAAAs/B,EAAA,EAAA,EAFF7gB,EAAA8sB,CAAG,EAvBL9sB,EAAA6hB,CAAG,E,qCAwBC,EAAM,SAAAxgC,EAAwD+sB,CAAI,E,oBAtBlE/sB,EAAAmqD,CAAS,CAAA,CAAC,KAAM,GAAa1C,EAAS,MAAGznD,EAAKqqD,CAAO,CAAA,CAAC,QAAQ,CAAA,EAAG,MAAIrqD,EAAIqqD,CAAO,CAAA,CAAC,aAYvD/hC,EAAE,kCAAkC,MAO9CA,EAAE,uCAAuC,MAG+BA,EAAE,8BAA8B,MAMtHA,EAAE,gCAAgC,C,GAfpCzK,EAAAohB,MAAAj/B,EAGaqqD,CAAO,CAAA,CAAC,QAAO,GAAA,EAAfA,CAAO,CAAA,CAAC,QAAOr1B,CAAA,EAM5BlZ,EAAA,QAAAyjB,EAA6E+rB,EAAQ,EACrFxvC,EAAA,QAAA0jB,MAAA9+B,EAGiB2pD,EAAUD,EAAI,EAAA,EAAA,CAAA,EA5BnCjvC,EAAA0P,EAAA2V,CAAG,C,UADDxgC,EAAAqqD,CAAO,CAAA,CAAC,UAAQh+B,EAAA6K,CAAA,C,gDAsCH,IAAA9L,EAAArrB,MAAAuoB,EAAE,iCAAiC,CAAA,EAAtDqH,EAAOoQ,EAAA,C,iDACL,IAAA2L,EAAG7sC,GAAA,E,EAAH6sC,E,OAEQ1rC,EAAAkmB,CAAY,CAAA,CAAC,QAAW,GAAOy6B,EAAM,QAAb,EAAA,IAAK,CACjC,IAAA/U,EAAGhtC,GAAA,EACD4iC,EAAIjhC,EADNqrC,CAAG,EACDtT,EAAAp4B,EAAAshC,EAAI,EAAA,EACJC,EAAIthC,EADJqhC,EAAI,CAAA,EACJhJ,EAAAt4B,EAAAuhC,CAAI,EAFN9iB,EAAAitB,CAAG,E,MACyChuB,EAAA0a,EAAAt4B,EAAA2gD,CAAK,CAAA,CAAC,MAAM,EAIR/iC,EAAA4a,EAAA,GAAApN,GAAA,GAAA,KAAAprB,EAAA2gD,CAAK,CAAA,CAAC,UAAU,MAAI,IAAA,C,OAFhE3gD,EAAA2gD,CAAK,CAAA,CAAC,WACHr4B,EAAE,iCAAgC,CAAI,IAAKsG,GAAG5uB,EAAC2gD,CAAK,CAAA,CAAC,UAAU,CAAA,CAAA,EAC/Dr4B,EAAE,iCAAiC,C,GAL1CnN,EAAA0P,EAAA+gB,CAAG,C,MASH,IAAAyB,EAACjvC,GAAA,EAADs6B,EAAAn4B,EAAA8sC,CAAC,EAECriB,G,GAAI,EAAA,C,2DAA8BtP,EAAA,GAAAjb,EAAAggC,EAAArV,CAAA,EAAA,KAAA9C,EAAE,sCAAsC,CAAA,CAAA,E,+BAF5E3J,EAAA0uB,CAAC,EACC3xB,EAAA,GAAAjb,EAAAi4B,EAAA,GAAAtN,GAAA,GAAA,EAAA,EAAA,KAAA9C,EAAE,oCAAoC,CAAA,CAAA,EADxCnN,EAAA0P,EAAAwiB,CAAC,C,GAZL1uB,EAAA+sB,CAAG,EAAHvwB,EAAA0P,EAAA6gB,CAAG,C,uCAoBc,IAAAtgB,EAAArrB,MAAAuoB,EAAE,sCAAsC,CAAA,EAA3DqH,EAAO2Q,EAAA,C,iDACL,IAAAuL,EAAG/sC,GAAA,EACD4wC,EAACnvC,EADHsrC,CAAG,EACDe,EAAArsC,EAAAmvC,CAAC,EAIC1kB,G,GAAI,EAAA,C,4DAA+BtP,EAAA,GAAAjb,EAAAqsC,EAAA1hB,CAAA,EAAA,KAAA9C,EAAE,2CAA2C,CAAA,CAAA,E,+BAJlF3J,EAAA+wB,CAAC,EADH/wB,EAAAktB,CAAG,E,2BAEC7rC,EAAAkmB,CAAY,CAAA,CAAC,mBAAmB,OAC7BoC,EAAE,uCAAsC,CAAI,MAAKtoB,EAAEkmB,CAAY,CAAA,CAAC,mBAAmB,MAAM,CAAA,EACzFoC,EAAE,mCAAmC,C,GAJ5CnN,EAAA0P,EAAAghB,CAAG,C,yCAUc,IAAAzgB,EAAArrB,MAAAuoB,EAAE,0BAA0B,CAAA,EAASmF,EAAA1tB,MAAAuoB,EAAE,yBAAyB,CAAA,EAAnFqH,EAAO9E,EAAA,C,oFACLihB,EAAG7rC,EAAA6/B,CAAA,EAAHjhB,EAAAitB,EAAG,OAAA9rC,EACKkmB,CAAY,CAAA,CAAC,MAAS,GAAMzD,GAAI,EAAV,IAAI,CAC9B,IAAAif,EAAIziC,GAAA,EACF0iC,EAAIphC,EADNmhC,CAAI,EACFwL,EAAAhtC,EAAAyhC,EAAI,EAAA,EACJ8D,EAAItlC,EADJwhC,EAAI,CAAA,EACJwL,EAAAjtC,EAAAulC,EAAI,EAAA,EAAJiI,EAAAvtC,EAAAslC,EAAI,CAAA,E,MAEF,IAAAwI,EAAAjvC,GAAA,E,UAAAqe,EAAA4wB,EAAA,aAAA7iB,CAAA,EAAA/N,EAAA4wB,EAAA,QAAAxgB,CAAA,EAAA,EAAA,SAAAztB,EAOW+sB,CAAI,GAAA/sB,EAAIuqD,CAAO,CAAA,CAAC9nC,GAAQ,C,OAJtB6F,EAAE,mCAAkC,CAAI,KAAM7F,CAAI,CAAA,MACvDziB,EAAAuqD,CAAO,CAAA,CAAC9nC,GACX6F,EAAE,0BAAyB,CAAI,MAAKtoB,EAAEuqD,CAAO,CAAA,CAAC9nC,EAAI,CAAA,EAClD6F,EAAE,mCAAkC,CAAI,KAAM7F,CAAI,CAAA,C,GANvD3G,EAAA,QAAAmyB,MAQgB+c,GAASvoC,CAAI,CAAA,EAR7BtH,EAAA0P,EAAAojB,CAAA,C,EADGnK,EAAA/jC,MAAA,CAAAmqD,EAAS,SAASznC,CAAI,CAAA,E,qBAH7B9D,EAAA+iB,CAAI,E,MAAJ5iB,GAAA4iB,EAAI,EAAA,0BAAAtW,GAAA,IAAA,EACwBxN,EAAAsvB,EAAAzqB,CAAI,EACL7E,EAAAuvB,EAAAntC,EAAAuqD,CAAO,CAAA,CAAC9nC,IAAS,CAAC,C,OAFTynC,EAAS,SAASznC,CAAI,EAAI,cAAgB,e,GAA9EtH,EAAA0P,EAAA6W,CAAI,C,GAFR/iB,EAAAmtB,CAAG,EAAH,IAAA+B,EAAA1tC,EAAA2rC,EAAG,CAAA,E,CAuBK,IAAA1gB,EAAArrB,MAAAuoB,EAAE,0BAA0B,CAAA,EAO7BmF,EAAA1tB,MAAAuoB,EAAE,wBAAwB,CAAA,EARjC6S,EAAA0S,EAAA,C,0GAOS,OAAAkd,G,wBALR,IAAA,OAAU,CAAE,OAAA/qD,EAAA0nD,CAAI,C,EAAhB,IAAA,MAAU,EAAA,CAAEjrC,EAAAirC,EAAI1yB,EAAA,EAAA,C,IAQjB,IAAAgb,EAAC7vC,EAAA0tC,EAAA,CAAA,EAADT,EAAAltC,EAAA8vC,EAAC,EAAA,EAAet0B,EAAA,GAAAjb,EAAA2sC,EAAAhiB,CAAA,EAAA,KAAA9C,EAAE,yBAAyB,CAAA,CAAA,E,yCAG/B,IAAA8C,EAAArrB,MAAAuoB,EAAE,4BAA4B,CAAA,EAA5CqH,EAAO9E,EAAA,C,0CACsC,IAAAO,EAAArrB,MAAAuoB,EAAE,6BAA6B,CAAA,EAA1E4a,GAAMrY,EAAA,C,aAAS,OAAA7qB,EAAAkmB,CAAY,CAAA,CAAC,M,2BAAwD,MAAA,G,mEAGnE,IAAAkF,EAAArrB,MAAAuoB,EAAE,4BAA4B,CAAA,EAAjDqH,EAAOme,EAAA,C,oEACQ,IAAA1iB,EAAArrB,MAAAuoB,EAAE,2BAA2B,CAAA,EAA1C6S,EAAKgT,EAAA,C,yBAAoE,OAAA8c,GAA5B,IAAA,OAAU,CAAE,OAAAjrD,EAAAsqD,CAAM,C,EAAlB,IAAA,MAAU,EAAA,CAAE7tC,EAAA6tC,EAAMt1B,EAAA,EAAA,C,IAC/Dwf,G,KAAK,EAAA,C,WAAO,OAAAx0C,EAAA01C,CAAK,C,uDAMT,IAAAtqB,EAAArrB,MAAAuoB,EAAE,4BAA4B,CAAA,EAC/BmF,EAAA1tB,MAAAyqD,GAAS,4BAA6B,kCAAkC,CAAA,EAH/E76B,EAAA9E,EAAA,C,yEAKE,IAAA8jB,EAAMvvC,GAAA,EAANkuC,EAAAptC,EAAAyuC,EAAM,EAAA,E,MAAN,EAAM,SAAA3uC,EAA6E+sB,CAAI,E,aACrFzE,EAAE,8BAA6B,CAAI,aAAYtoB,EAAEkmB,CAAY,CAAA,CAAC,IAAI,CAAA,C,GADpEpK,EAAA,QAAA6yB,EAAkGmT,EAAO,EAAzG3mC,EAAA0P,EAAA8jB,CAAM,C,mCANL3uC,EAAAkmB,CAAY,CAAA,CAAC,YAAUmG,EAAAwgB,CAAA,C,mBAgBjB,IAAA9X,EAAO,GAAA,C,WACdiX,EAAG/rC,EAAAwrD,CAAA,EAAH5sC,EAAAmtB,EAAG,OACK5Y,GAAM,CAAK7X,EAAKgQ,KAAQhQ,GAAG,EAAA,IAAA,C,wBAAhB,IAAAA,MAAIvb,EAAAisB,CAAA,CAAA,CAAA,GAACV,MAAMvrB,EAAAisB,CAAA,CAAA,CAAA,GAC1B,IAAA4iB,EAAMxvC,GAAA,EAANkuC,EAAArtC,EAAA2uC,EAAM,EAAA,E,OAANxxB,EAAAwxB,EAAM,eAAA7uC,EAA6BwzB,CAAI,IAAKjY,EAAG,CAAA,EAAgCqC,EAAA2vB,EAAAhiB,EAAK,CAAA,C,GAApFzP,EAAA,QAAA+yB,MAAMnuC,EAA2D8yB,EAAOjY,EAAG,EAAA,EAAA,CAAA,EAA3EJ,EAAA0P,EAAAgkB,CAAM,C,GAFVlwB,EAAAqtB,CAAG,EAAH,IAAAwD,EAAArvC,EAAA6rC,EAAG,CAAA,E,MAMD,IAAAsD,EAAMhwC,GAAA,EAANkuC,EAAAttC,EAAAovC,EAAM,EAAA,EAAoE5zB,EAAA,GAAAjb,EAAA+sC,EAAApiB,CAAA,EAAA,KAAA9C,EAAE,0BAA0B,CAAA,CAAA,EAAtGxM,EAAA,QAAAwzB,EAA6Dub,EAAU,EAAvE1vC,EAAA0P,EAAAykB,CAAM,C,UADHtvC,EAAAkmB,CAAY,CAAA,CAAC,YAAUmG,EAAA0gB,CAAA,C,GAL5BrxB,EAAA,GAAA9a,EAAAorC,EAAG,aAAA5gB,CAAA,EAAA,KAAwC9C,EAAE,0BAA0B,CAAA,CAAA,E,QAJnE8C,EAAArrB,MAAAuoB,EAAE,4BAA4B,CAAA,EAC/BmF,EAAA1tB,MAAAuoB,EAAE,2BAA2B,CAAA,EAFpCqH,EAAA9E,EAAA,C,iDAIW,U,oDAYPohB,EAAGhsC,EAAA6xC,CAAA,EAAHhC,EAAAvvC,EAAA0rC,CAAG,E,CACY,IAAA7gB,EAAArrB,MAAAuoB,EAAE,4BAA4B,CAAA,EAA3C6S,EAAK2U,EAAA,C,uEAAsD,IAAA,OAAU,CAAE,OAAA9vC,EAAA09B,CAAM,CAAA,CAAC,K,EAAnB,IAAA,MAAU,EAAA,CAAE,EAAAA,CAAM,CAAA,CAAC,MAAK1I,C,kBACrE,IAAA5J,EAAArrB,MAAAuoB,EAAE,2BAA2B,CAAA,EAA3C6tB,GAAM7F,EAAA,C,qCAA+C,OAAAtwC,EAAA09B,CAAM,CAAA,CAAC,I,gBAAe,OAAA19B,EAAA+pD,CAAW,C,EAAa,SAAA,GAAM,EAAMrsB,CAAM,CAAA,CAAC,KAAO/J,C,GAC7H,IAAAuY,EAAG/rC,EAAAmwC,EAAA,CAAA,EACDQ,EAAMvwC,EADR2rC,CAAG,EACD8B,EAAA9tC,EAAA4wC,EAAM,EAAA,EAGNyB,EAAMpyC,EAHN2wC,EAAM,CAAA,EAGN5C,EAAAhuC,EAAAqyC,EAAM,EAAA,EAJR5zB,EAAAutB,CAAG,EAHLvtB,EAAAstB,CAAG,EAUH,IAAAiW,EAAC/hD,EAVD8rC,EAAG,CAAA,EAUHsC,EAAAruC,EAAAgiD,EAAC,EAAA,E,cANG,EAAM,SAAA92B,E,2BAAwDprB,EAAA+sB,CAAI,GAAA,CAAA/sB,EAAK09B,CAAM,CAAA,CAAC,MAAM,KAAI,MACtFpV,EAAE,6BAA6B,MAEkDA,EAAE,6BAA6B,MAIpHA,EAAE,2BAA2B,C,GAP3BxM,EAAA,QAAAg1B,EAAqGzW,EAAG,EAGxGve,EAAA,QAAAy2B,MAAM7xC,EAA4Dg9B,EAAS,IAAI,CAAA,E,gBARjF19B,EAAA09B,CAAM,GAAArR,EAAAigB,CAAA,C,iBAyBC,IAAAtM,EAAI,GAAA,C,iBACLnhB,EAAAmyB,EAAA,OAAAhxC,EAAAo6B,EAAK,EAAI,GAAQyvB,EAAO,MAAM,MAAI,EAAzB,IAAM,CACnB,IAAA14B,EAAEvxB,GAAA,EACA42B,EAAEj2B,EADJ4wB,CAAE,EAEEib,EAAG7rC,EADLi2B,CAAE,EAEEgY,EAAIjuC,EADN6rC,CAAG,EACDqF,EAAAlxC,EAAAiuC,CAAI,E,CACkB,IAAApjB,EAAArrB,MAAA,WAAAC,EAAA6pD,CAAM,CAAA,CAAC,MAAM,MAAI,EAArC7+B,GAAIymB,EAAA,C,mGACF/1B,EAAA,GAAAjb,EAAAguC,EAAArjB,CAAA,EAAA,KAAA5H,EAAKxjB,EAAC6pD,CAAM,CAAA,CAAA,CAAA,E,kDAEM,IAAAza,EAAI3vC,GAAA,EAAJmvC,EAAA1uC,EAAAkvC,EAAI,EAAA,EAAgD1zB,EAAA,GAAAjb,EAAAmuC,EAAAxjB,CAAA,EAAA,KAAA9C,EAAE,8BAA8B,CAAA,CAAA,EAApFnN,EAAA0P,EAAAukB,CAAI,C,QACC,IAAAe,EAAIzwC,GAAA,EAAJovC,EAAA5uC,EAAAiwC,EAAI,EAAA,EAAkDz0B,EAAA,GAAAjb,EAAAquC,EAAA1jB,CAAA,EAAA,KAAA9C,EAAE,8BAA8B,CAAA,CAAA,EAAtFnN,EAAA0P,EAAAslB,CAAI,C,UADzBnwC,EAAA6pD,CAAM,CAAA,CAAC,QAAOx9B,EAAA0hB,CAAA,EAAA/tC,EACT6pD,CAAM,CAAA,CAAC,SAAOx9B,EAAAgiB,EAAA,CAAA,C,sBACA,IAAAgC,EAAI1wC,GAAA,EAAJ0vC,EAAAnvC,EAAAmwC,EAAI,EAAA,EAAqC30B,EAAA,GAAAjb,EAAA4uC,EAAAjkB,CAAA,EAAA,KAAA9C,EAAE,iCAAiC,CAAA,CAAA,EAA5EnN,EAAA0P,EAAAwlB,CAAI,C,EAAvB1D,EAAA5sC,MAAA+pD,GAAS9pD,EAAC6pD,CAAM,CAAA,CAAA,E,qBANtBlrC,EAAA6vB,CAAI,EAQJ,IAAAgC,EAAIrwC,EARJquC,EAAI,CAAA,EAQJe,EAAArvC,EAAAswC,EAAI,EAAA,EACJnE,EAAGlsC,EADHqwC,EAAI,CAAA,EAEF/D,EAAGlsC,EADL8rC,CAAG,EACDoG,EAAAlyC,EAAAksC,CAAG,EAA2Cmd,EAAMnX,MAAAzyC,EAAC6pD,CAAM,CAAA,EAA3DlrC,EAAA8tB,CAAG,EACH,IAAA6B,EAAGnuC,EADHssC,EAAG,CAAA,EACH0G,EAAA5yC,EAAA+tC,CAAG,EAAsC2b,EAAQ9W,MAAAnzC,EAAC6pD,CAAM,CAAA,EAAxDlrC,EAAA2vB,CAAG,EAFL3vB,EAAA0tB,CAAG,EAVL1tB,EAAAytB,CAAG,EADLztB,EAAA6X,CAAE,EAiBF,IAAAE,EAAEv2B,EAjBFq2B,CAAE,EAiBF+c,EAAAhzC,EAAAm2B,CAAE,EACQkzB,EAAMrW,MAAAvzC,EAAC6pD,CAAM,CAAA,EADvBlrC,EAAA+X,CAAE,EAGF,IAAAmB,EAAE13B,EAHFu2B,CAAE,EAGFid,EAAApzC,EAAAs3B,CAAE,EACQoyB,EAAQtW,MAAA3zC,EAAC6pD,CAAM,CAAA,EADzBlrC,EAAAkZ,CAAE,EArBJlZ,EAAAwS,CAAE,EAWuBzV,EAAA,GAAAjb,EAAA8uC,EAAAnkB,CAAA,EAAA,KAAAu/B,EAAM3qD,EAAC6pD,CAAM,CAAA,CAAA,CAAA,EAXtC1uC,EAAA0P,EAAAsG,CAAE,C,oBATL7I,EAAE,4BAA4B,EAC5B,CAAA,MAAOA,EAAE,2BAA2B,EAAG,KAAM,EAAI,EACjD,CAAA,MAAO,GAAI,MAAO,GAAM,KAAM,EAAI,C,GAG/BmF,EAAA1tB,MAAAuoB,EAAC,8BAAAtoB,EAA+BwzB,CAAI,GAAA,CAAA,EAP5C9B,GAAAgf,EAAA,C,uCAMQ,OAAA1wC,EAAAo6B,EAAK,CAAA,CAAC,M,2BAGH,O,yEA9NX/X,EAAI,IAAK,UAASgK,EAAAiL,EAAA,EA4HbjV,EAAI,IAAK,QAAOgK,EAAA0L,GAAA,CAAA,EAoChB1V,EAAI,IAAK,WAAUgK,EAAAmgB,GAAA,CAAA,EAInBnqB,EAAI,IAAK,UAASgK,EAAA4gB,GAAA,CAAA,EAAA5gB,EAAAwF,GAAA,EAAA,C,GArK7BlT,EAAAkS,CAAG,E,gBAzCD7wB,EAAAuzB,CAAO,GAAA,CAAAvzB,EAAKkmB,CAAY,EAAAmG,EAAAgE,CAAA,EAAArwB,EAElBkmB,CAAY,EAAAmG,EAAA+J,EAAA,EAAA,EAAA/J,EAAAqE,EAAA,CAAA,C,qCAhBjB,C,4pCC3XR,SAAA27B,GAAA,EAAA,EAAA,C,QAUE,IAQM7uB,EAAW5P,GAAc,EAE3BmG,EAAOryB,EAAO,IAAI,EAClBqrB,EAAOrrB,EAAO,EAAK,EACnB4qD,EAAS5qD,EAAO,EAAE,EAClB6qD,EAAO7qD,EAAO,EAAE,EAEpB,eAAeoyB,GAAO,CACpB,IAAMnK,EAAS,MAAM6T,EAAS,YAAO5S,EAAA,IAAW,MAAM;;;;;;GAAK,CAAA,EAEvDjB,IACFlN,EAAAsX,EAAOpK,EAAM,EAAA,EACblN,EAAA8vC,EAAO5iC,EAAO,OAAO,YAAc,GAAE,EAAA,EAEzC,CAEAmK,EAAI,EAEJ,IAAM04B,EAAe7qD,MAAA,CAClB,CAAA,GAAI2mB,EAAE,cAAc,CAAA,EACjB,IAAA1mB,EAAAmyB,CAAI,CAAA,EAAE,WAAS,CAAA,EAAA,CAAQ,IAAK,GAAQ,CAAM0zB,EAAS,IAAKn/B,EAAE,aAAY,CAAI,KAAMm/B,EAAS,IAAI,CAAA,CAAA,CAAA,C,GAG7FgF,EAAM9qD,OAAAC,EAAamyB,CAAI,CAAA,EAAE,cAAY,CAAA,EAAA,CAAQ,OAAQ,GAAStR,EAAK,UAAU,CAAA,EAEnF,eAAemoC,EAAI,EAAO,EAAW,EAAQ,CAC3CnuC,EAAAsQ,EAAO,EAAI,EAEX,IAAMpD,EAAS,MAAM6T,EAAS,YAAO5S,EAAA,IAAW,MAAMzE,EAAOoD,CAAS,EAAGwE,CAAM,EAM/E,OAJAtR,EAAAsQ,EAAO,EAAK,EAERpD,GAAQ,MAAMmK,EAAI,EAEfnK,CACT,CAEA,eAAeg3B,GAAQ,CACrB,IAAMvhC,EAAKxd,EAAG0qD,CAAM,CAAA,CAAC,KAAI,EAEpBltC,GAQD,MANiBwrC,EAAG,+FAAA,CAEpB,OAAQxrC,CAAK,EACfkJ,EAAE,kBAAiB,CAAI,OAAQlJ,CAAK,CAAA,CAAA,GAG5B3C,EAAE6vC,EAAS,EAAE,CACzB,CAEA,eAAeI,EAAM,EAAM,CACzBjwC,EAAAsQ,EAAO,EAAI,EAEX,IAAMpD,EAAS,MAAM6T,EAAS,YAAO5S,EAAA,IAC/B,MAAK,8EAAA,CAAkF,OAAQnI,EAAK,MAAM,CAAA,CAAA,EAGhHhG,EAAAsQ,EAAO,EAAK,EAEPpD,IAEDA,EAAO,YAAY,MACrB6T,EAAS,IAAIlV,EAAE,iBAAgB,CAAI,OAAQ7F,EAAK,MAAM,CAAA,CAAA,EAEtD+a,EAAS,MAAMlV,EAAE,qBAAoB,CAAI,KAAM7F,EAAK,UAAU,CAAA,CAAA,EAGhE,MAAMqR,EAAI,EACZ,CAEA,SAAS64B,EAAM,EAAM,EAAU,CAC7B/B,E;;SAII,CAAA,OAAQnoC,EAAK,OAAQ,SAAUglC,GAAY,IAAI,EACtCn/B,EAAXm/B,EAAa,sBAAoD,sBAA/B,CAAI,OAAQhlC,EAAK,MAAM,CAAoD,C,CAEjH,CAEA,SAASw5B,EAAQ,EAAM,CAChB,QAAQ3zB,EAAE,0BAAyB,CAAI,OAAQ7F,EAAK,MAAM,CAAA,CAAA,GAE/DmoC,EAAG,mFAAA,CAEC,OAAQnoC,EAAK,MAAM,EACrB6F,EAAE,mBAAkB,CAAI,OAAQ7F,EAAK,MAAM,CAAA,CAAA,CAE/C,CAEA,SAASmqC,EAAM,EAAO,EACfxtC,GAAU,QAAQkJ,EAAE,uBAAsB,CAAI,KAAI1mB,EAAEmyB,CAAI,CAAA,CAAC,OAAO,UAAU,CAAA,CAAA,IAE/E62B,EAAG,uFAAA,CAEC,KAAMxrC,CAAK,EACbA,EAAQkJ,EAAE,iBAAgB,CAAI,KAAMlJ,CAAK,CAAA,EAAMkJ,EAAE,kBAAkB,CAAA,CAEvE,C,CAGkB,IAAA8C,EAAAzpB,MAAA2mB,EAAE,eAAe,CAAA,EAASmF,EAAA9rB,MAAA2mB,EAAE,cAAc,CAAA,EAA7DqH,EAAO9E,EAAA,C,2FACL4Q,GAAO9Q,EAAA,C,eAAW,OAAA6S,EAAS,K,+CAIvB,IAAAhD,EAAEn5B,GAAA,EAAFwd,EAAA2b,EAAE,OAAA54B,EACMmyB,CAAI,CAAA,CAAC,aAAgB,GAAMtR,EAAK,QAAM,EAAjB,IAAI,CAC7B,IAAAgY,EAAEr5B,GAAA,EACAmgB,EAAIxf,EADN04B,CAAE,EACA3a,EAAA9d,EAAAuf,EAAI,EAAA,EAAJkP,EAAA3uB,EAAAyf,EAAI,CAAA,E,MAGF,IAAAiK,EAAIzqB,GAAA,EAAJusB,EAAAtrB,EAAAwpB,EAAI,EAAA,E,iBAAkDlD,EAAE,kBAAiB,CAAI,MAAOwG,GAAKltB,EAAC6gB,CAAI,CAAA,CAAC,YAAY,CAAA,CAAA,C,GAA3GtH,EAAA0P,EAAAW,CAAI,C,QAEJ,IAAAW,EAAIlrB,GAAA,EAAJusB,EAAAxrB,EAAAmqB,EAAI,EAAA,EAAqCzQ,EAAA,GAAAzZ,EAAAurB,EAAApC,CAAA,EAAA,KAAA9C,EAAE,kBAAkB,CAAA,CAAA,EAA7DnN,EAAA0P,EAAAsB,CAAI,C,UAHFvqB,EAAA6gB,CAAI,CAAA,CAAC,aAAY4J,EAAAP,CAAA,EAAAlqB,EAEX6gB,CAAI,CAAA,CAAC,YAAU4J,EAAAgE,EAAA,CAAA,C,GAIzB,IAAA5F,EAAG3oB,EAAA2uB,EAAA,CAAA,EAAHE,EAAA5uB,EAAA0oB,CAAG,E,OAGQ,IAAAW,EAAAzpB,MAAA2mB,EAAE,eAAc,CAAI,OAAM1mB,EAAE6gB,CAAI,CAAA,CAAC,MAAM,CAAA,CAAA,EACtCgL,EAAA9rB,MAAAC,EAAA6gB,CAAI,CAAA,CAAC,UAAU,KAAO,EAAE,EAFhC0zB,GAAAtrB,EAAA,C,+DAGU,OAAAjpB,EAAA4qD,CAAe,C,iBACd,OAAA5qD,EAAAmrB,CAAI,C,EACH,SAAA,GAAQ4/B,EAAK/qD,EAAC6gB,CAAI,EAAElH,CAAG,C,WAGnC,IAAA8R,EAAMnsB,GAAA,EAANg0B,EAAAlzB,EAAAqrB,EAAM,EAAA,E,MAAN,EAAM,SAAAzrB,EAA4CmrB,CAAI,E,QAA+B,KAAAzE,EAAE,eAAe,CAAA,C,EAAtGxM,EAAA,QAAAuR,MAAuEq/B,EAAK9qD,EAAC6gB,CAAI,CAAA,CAAA,EAAjFtH,EAAA0P,EAAAwC,CAAM,C,UATJzrB,EAAA6gB,CAAI,CAAA,CAAC,YAAU,CAAA7gB,EAAK6gB,CAAI,CAAA,CAAC,aAAY4J,EAAAqE,CAAA,EAAArE,EAAAwF,EAAA,EAAA,C,GAWzC,IAAAtE,EAAAzrB,EAAA6uB,EAAA,CAAA,EAZFhS,EAAA8L,CAAG,EAAH,IAAAqG,EAAAhvB,EAAA2oB,EAAG,CAAA,E,MAsBD,IAAAC,EAACvpB,GAAA,EAADi0B,EAAArzB,EAAA2oB,CAAC,EAEC+K,EAAI3zB,EAAAszB,CAAA,EAAJE,EAAAtzB,EAAAyzB,EAAI,EAAA,EACJiX,EAAI5qC,EADJ2zB,EAAI,CAAA,EACJD,EAAAxzB,EAAA0qC,EAAI,EAAA,EAHN/tB,EAAA+L,CAAC,E,uBAE2C9M,EAAA0X,EAAA1zB,EAAA6gB,CAAI,CAAA,CAAC,UAAU,EACf7E,EAAA4X,EAAA5zB,EAAA6gB,CAAI,CAAA,CAAC,WAAW,C,EAF1D,KAAA6F,EAAE,gBAAgB,CAAA,C,EADpBnN,EAAA0P,EAAAH,CAAC,C,WADE,CAAA9oB,EAAA6gB,CAAI,CAAA,CAAC,YAAU7gB,EAAI6gB,CAAI,CAAA,CAAC,eAAY4J,EAAAuE,CAAA,C,GA9B3CjS,EAAA8b,CAAE,E,MACiD7c,EAAAkC,EAAAle,EAAA6gB,CAAI,CAAA,CAAC,MAAM,EAoB1DpF,EAAAkQ,EAAA,aAAAnC,CAAA,EAAA,EAAA,SAAAxpB,EAIWmrB,CAAI,C,EADF,KAAAzE,EAAE,kBAAiB,CAAI,OAAM1mB,EAAE6gB,CAAI,CAAA,CAAC,MAAM,CAAA,CAAA,C,EAHvD3G,EAAA,QAAAyR,MAKgB0uB,EAAOr6C,EAAC6gB,CAAI,CAAA,CAAA,EA1BhCtH,EAAA0P,EAAA4P,CAAE,C,GAFN9b,EAAA6b,CAAE,EAAFrf,EAAA0P,EAAA2P,CAAE,C,UADA54B,EAAAmyB,CAAI,CAAA,CAAC,aAAa,QAAM1H,EAAA6D,CAAA,C,GA6C5B,IAAA3H,EAAAzmB,EAAA0uB,EAAA,CAAA,EAOEc,EAAAvvB,EAPFwmB,CAAA,EAOErL,EAAAoU,CAAA,EAQA,IAAA+D,EAAMvzB,EARNwvB,EAAA,CAAA,EAQAoE,EAAA1zB,EAAAqzB,EAAM,EAAA,EAfR1W,EAAA4J,CAAA,EAAA,IAAAyI,EAAAlvB,EAAAymB,EAAA,CAAA,E,MAmBE,IAAAu9B,EAAAvkD,GAAA,EAOEy1B,EAAIj1B,EAPN+jD,CAAA,EAOElwB,EAAA5zB,EAAAg1B,EAAI,EAAA,EACJlB,EAAAh0B,EADAk1B,EAAI,CAAA,EACJ9Z,EAAA4Y,CAAA,EAQA,IAAAH,EAAM7zB,EARNg0B,EAAA,CAAA,EAQAC,EAAA/zB,EAAA2zB,EAAM,EAAA,EAANW,EAAAx0B,EAAA6zB,EAAM,CAAA,E,MAIJ,IAAAK,EAAM10B,GAAA,EAAN20B,EAAAj0B,EAAAg0B,EAAM,EAAA,E,MAAN,EAAM,SAAAp0B,EAAsDmrB,CAAI,E,QAA+B,KAAAzE,EAAE,cAAc,CAAA,C,EAA/GxM,EAAA,QAAAka,MAAiF42B,EAAM,IAAI,CAAA,EAA3FzxC,EAAA0P,EAAAmL,CAAM,C,UADJp0B,EAAAmyB,CAAI,CAAA,CAAC,OAAO,YAAU1H,EAAA8J,CAAA,C,GAnB5BxX,EAAAmnC,CAAA,E,qBAQEzoC,EAAAyY,EAAA,aAAArI,CAAA,EAAApQ,EAAAyY,EAAA,cAAA,SAAAl0B,EAGqB6qD,CAAM,CAAA,CAAC,EAAC,EAAG,QAAU,gBAAc,IAAA,EAKxD,EAAM,SAAA/+B,E,aATgBpF,EAAE,eAAe,MAG1BA,EAAE,eAAe,MAMoB1mB,EAAAmrB,CAAI,GAAA,CAAAnrB,EAAK2qD,CAAI,CAAA,CAAC,KAAI,GAAA3qD,EAAM2qD,CAAI,CAAA,CAAC,KAAI,IAAA3qD,EAAOmyB,CAAI,CAAA,CAAC,OAAO,eACpGzL,EAAE,cAAc,C,GAjBpBlM,EAAA,SAAA0pC,EAEY,GAAU,CACnB1pC,EAAM,eAAc,EACpBwwC,EAAKhrD,EAAC2qD,CAAI,CAAA,CAAC,KAAI,CAAA,CACjB,CAAC,EAGA1uC,EAAAiY,MAAAl0B,EAMa2qD,CAAI,EAAA,GAAArqD,EAAJqqD,EAAIv3B,CAAA,CAAA,EAdnB7Z,EAAA0P,EAAAi7B,CAAA,C,WADElkD,EAAA6qD,CAAM,CAAA,CAAC,QAAM7qD,EAAImyB,CAAI,CAAA,CAAC,OAAO,aAAU1H,EAAA0K,CAAA,C,eAXzC1Z,EAAAiU,EAAA,aAAAlG,CAAA,EAQA,EAAM,SAAAqC,E,aANOnF,EAAE,aAAa,MAMgC1mB,EAAAmrB,CAAI,GAAA,CAAAnrB,EAAK0qD,CAAM,CAAA,CAAC,KAAI,MAAKhkC,EAAE,aAAa,C,GAftGlM,EAAA,SAAAmM,EAEY,GAAU,CACnBnM,EAAM,eAAc,EACpBukC,EAAK,CACP,CAAC,EAEA9iC,EAAAyT,MAAA1vB,EAMa0qD,CAAM,EAAA,GAAApqD,EAANoqD,EAAMt3B,CAAA,CAAA,E,gBA3DnBpzB,EAAAmyB,CAAI,GAAA1H,EAAA6K,CAAA,C,qCALH,C,ykDCtHR,SAAAy2B,GAAA,EAAA,EAAA,C,QAUE,IAAMnwB,EAAW5P,GAAc,EAEzBggC,EAAO,CAAI,SAAU,OAAQ,WAAY,OAAO,EAChD/V,EAAK,CAAI,eAAgB,SAAS,EAClC9O,EAAM,CAAI,OAAQ,aAAc,cAAe,cAAe,WAAY,SAAU,WAAY,Q,EAOlGjL,EAAS36B,EAAMC,EAAA,CAAA,CAAA,CAAA,EACf+mD,EAAYhnD,EAAMC,EAAA,CAAA,CAAA,CAAA,EAClBsgB,EAAOvgB,EAAO,EAAE,EAChB0qD,EAAU1qD,EAAO,IAAI,EACrBgmC,EAAQhmC,EAAO,IAAI,EACnB4pB,EAAO5pB,EAAO,EAAK,EAEjBoY,EAAGlY,MAAAC,EACPogB,CAAA,CAAA,CACG,KAAI,CAAA,CACJ,YAAW,CAAA,CACX,QAAQ,cAAe,GAAG,CAAA,CAC1B,QAAQ,WAAY,EAAE,CAAA,EAGrBoqC,EAAgBF,EAAQ,IAAK,GAAM,CAAMG,EAAQzlC,EAAC,yBAA0BylC,GAAM,CAAA,CAAA,EAClFC,EAAcnW,EAAM,IAAK,GAAI,CAAM1pB,EAAM7F,EAAC,uBAAwB6F,GAAI,CAAA,CAAA,EACtE8/B,EAAellB,EAAO,IAAK,GAAK,CAAMiG,EAAO1mB,EAAC,gBAAiB0mB,GAAK,CAAA,CAAA,EACpEwd,EAAenpD,MAAA,CAAc,CAAA,GAAIilB,EAAE,+BAA+B,CAAA,EAAO,GAAAhlB,EAAA6mD,CAAS,CAAA,CAAC,IAAK,GAAI,CAAM1nC,EAAK,IAAKA,EAAK,IAAI,CAAA,C,GAE3H,eAAeqR,GAAO,CACpB,IAAMnK,EAAS,MAAM6T,EAAS,YAAO5S,EAAA,IAAW,MAAM;;;IAAM,CAAA,EAEvDjB,IAELlN,EAAAqhB,EAASnU,EAAO,OAAM,EAAA,EACtBlN,EAAA0tC,EAAYxgC,EAAO,UAAS,EAAA,EAC9B,CAEAmK,EAAI,EAEJ,eAAeo6B,GAAS,CACtB,GAAE,CAAA5qD,EAAGiY,CAAG,EAAE,OAEV,IAAMgQ,EAAKjoB,EAAGogB,CAAI,CAAA,CAAC,KAAI,EAUlB,MATc8Z,EAAS,YAAO5S,EAAA,IAE3B,MAAK,2GAAA,CACP,IAAGtnB,EAAHiY,CAAG,EACH,KAAMgQ,CAAK,CAAA,EAEfjD,EAAE,eAAc,CAAI,KAAMiD,CAAK,CAAA,CAAA,IAKjC9O,EAAAiH,EAAO,EAAE,EACT,MAAMoQ,EAAI,EACZ,CAEA,eAAewG,EAAO,EAAO,CACtB,QAAQhS,EAAE,wBAAuB,CAAI,KAAM8W,EAAM,IAAI,CAAA,CAAA,GAOtD,MALe5B,EAAS,YAAO5S,EAAA,IACvB,MAAK,oEAAA,CAAwE,IAAKwU,EAAM,GAAG,CAAA,EACrG9W,EAAE,iBAAgB,CAAI,KAAM8W,EAAM,IAAI,CAAA,CAAA,GAG9B,MAAMtL,EAAI,CACtB,CAEA,SAASq6B,EAAK,EAAO,CACnB1xC,EAAAoxC,EAAUzuB,EAAM,IAAG,EAAA,E,EACnB+J,E,CACE,OAAQ/J,EAAM,OACd,KAAMA,EAAM,KAAK,OAASA,EAAM,KAAK,IAAK,IAAI,CAAA,GAAW3c,CAAI,EAAA,EAAQ,CAAA2rC,EAAS,CAAA,EAC9E,YAAahvB,EAAM,aAAe,GAClC,cAAeA,EAAM,eAAiB,GACtC,QAASA,EAAM,aAAa,KAAK,IAAI,C,KAEzC,CAEA,SAASgvB,GAAY,CACnB,MAAM,CAAG,KAAM,eAAgB,MAAO,OAAQ,MAAO,EAAE,CACzD,CAEA,SAAStvB,GAAQ,CACfriB,EAAAoxC,EAAU,IAAI,EACdpxC,EAAA0sB,EAAQ,IAAI,CACd,CAEA,eAAejkB,GAAK,EAAO,CACzBzI,EAAAsQ,EAAO,EAAI,EAEX,IAAMxD,EAAS,CACb,IAAK6V,EAAM,IACX,OAAM97B,EAAE6lC,CAAK,CAAA,CAAC,OACd,KAAI7lC,EAAE6lC,CAAK,CAAA,CAAC,SAAW,OAAS7lC,EAAA6lC,CAAK,CAAA,CAAC,KAAK,KAAG,CAAI,OAAM,QAAO,YAAK,CAAU,OAAM,MAAOhb,IAAS,UAAY6gB,EAAQ,KAAM,OAAK,EAAA,E,GACnI,YAAW1rC,EAAE6lC,CAAK,CAAA,CAAC,SAAW,WAAU7lC,EAAG6lC,CAAK,CAAA,CAAC,YAAc,GAC/D,cAAa7lC,EAAE6lC,CAAK,CAAA,CAAC,SAAW,WAAU7lC,EAAG6lC,CAAK,CAAA,CAAC,cAAgB,GACnE,aAAY7lC,EAAE6lC,CAAK,CAAA,CAAC,SAAW,QAAU7lC,EAAA6lC,CAAK,CAAA,CAAC,QAAQ,MAAM,QAAQ,CAAA,CAAE,OAAO,OAAO,E,IAGjF5U,EAAO,MAAMiJ,EAAS,YAEpB5S,EAAA,IAAA,M;;aAIFrB,C,EAEJjB,EAAE,sBAAqB,CAAI,KAAM8W,EAAM,KAAM,OAAQ9W,EAAC,yBAAAhlB,EAA0B6lC,CAAK,CAAA,CAAC,QAAM,CAAA,CAAI,YAAW,C,IAG7G1sB,EAAAsQ,EAAO,EAAK,EAEPwH,IAELuK,EAAK,EACL,MAAMhL,EAAI,EACZ,CAEA,eAAerO,EAAQ,EAAO,CAC5BhJ,EAAAsQ,EAAO,EAAI,EAEX,IAAMwH,EAAO,MAAMiJ,EAAS,YAAO5S,EAAA,IACvB,MAAK,gFAAA,CAAoF,IAAKwU,EAAM,GAAG,CAAA,EACjH9W,EAAE,0BAAyB,CAAI,KAAM8W,EAAM,IAAI,CAAA,CAAA,EAGjD3iB,EAAAsQ,EAAO,EAAK,EAERwH,GAAM,MAAMT,EAAI,CACtB,CAEA,SAASqe,GAAQ,EAAO,CAStB,OARI/S,EAAM,SAAW,WAGZ9W,EAAE,iCAAgC,CAAI,SAF/BhlB,EAAG6mD,CAAS,CAAA,CAAC,KAAM,GAAS1nC,EAAK,MAAQ2c,EAAM,WAEN,CAAA,EAAU,MAAQA,EAAM,aAAe,EAAE,CAAA,EAG9FA,EAAM,SAAW,QAAgB9W,EAAE,8BAA6B,CAAI,QAAS8W,EAAM,aAAa,KAAK,IAAI,CAAA,CAAA,EAEtG9W,EAAE,4BAA4B,CACvC,C,CAGkB,IAAA8C,EAAA/nB,MAAAilB,EAAE,cAAc,CAAA,EAASmF,EAAApqB,MAAAilB,EAAE,aAAa,CAAA,EAA3DqH,EAAO9E,EAAA,C,2FACL4Q,GAAO9Q,EAAA,C,eAAW,OAAA6S,EAAS,K,uBAGzB,IAAAhD,EAAEv3B,GAAA,EAAF4b,EAAA2b,EAAE,OAAAl3B,EACMw6B,CAAM,EAAI,GAAOsB,EAAM,KAAG,EAAhB,IAAK,CACnB,IAAA3E,EAAEz3B,GAAA,EACAwoB,EAAI/nB,EADNg3B,CAAE,EACA3a,EAAApc,EAAA8nB,EAAI,EAAA,EACJjK,EAAI/d,EADJgoB,EAAI,CAAA,EACJ8B,EAAA5pB,EAAA6d,EAAI,EAAA,EACJ4K,EAAI3oB,EADJ+d,EAAI,CAAA,EACJiM,EAAA9pB,EAAAyoB,EAAI,EAAA,EAAJqE,EAAAhtB,EAAA2oB,EAAI,CAAA,E,MAEF,IAAA6K,EAAI50B,GAAA,EAAJ8yB,EAAAxxB,EAAAszB,EAAI,EAAA,EAAqCtb,EAAA,GAAA/X,EAAAuxB,EAAA9J,CAAA,EAAA,KAAA+mB,GAAO7uC,EAAC87B,CAAK,CAAA,CAAA,CAAA,EAAtDjkB,EAAA0P,EAAAmM,CAAI,C,UADF1zB,EAAA87B,CAAK,CAAA,CAAC,SAAW,UAAQ/S,EAAAP,CAAA,C,GAG7B,IAAAqL,EAAI3zB,EAAAgtB,EAAA,CAAA,EAAJC,EAAAhtB,EAAA0zB,CAAI,E,MAEA,IAAA9J,EAAM/qB,GAAA,EAAN8yB,EAAA1xB,EAAA2pB,EAAM,EAAA,E,MAAN,EAAM,SAAA/pB,EAAsDypB,CAAI,E,QAC9D,KAAAzE,EAAE,uBAAuB,CAAA,C,EAD3BxM,EAAA,QAAAuR,MAAiF5H,EAAOniB,EAAC87B,CAAK,CAAA,CAAA,EAA9FjkB,EAAA0P,EAAAwC,CAAM,C,UADJ/pB,EAAA87B,CAAK,CAAA,CAAC,SAAW,UAAQ/S,EAAAgE,CAAA,C,GAK7B,IAAA9C,EAAA/pB,EAAAitB,EAAA,CAAA,EAAA6E,GAAA5xB,EAAA6pB,EAAA,EAAA,EAMA8H,EAAA7xB,EANA+pB,EAAA,CAAA,EANF5O,EAAAwY,CAAI,EAAJ,IAAAxG,EAAAntB,EAAA2zB,EAAI,CAAA,E,OAqBF,IAAA5O,EAAAxlB,GAAA,EAAA+tB,EAAArtB,EAAA8kB,CAAA,E,CAQU,IAAA6C,EAAA/nB,MAAAilB,EAAE,sBAAsB,CAAA,EADhC6tB,GAAArlB,EAAA,C,qCAEQ,OAAAxtB,EAAA6lC,CAAK,CAAA,CAAC,M,gBACJ,OAAA2kB,C,iBACC,OAAAxqD,EAAAypB,CAAI,C,EACH,SAAA,GAAM,EAAMoc,CAAK,CAAA,CAAC,OAAS4kB,C,GAEvC,IAAArjC,EAAClnB,EAAAstB,EAAA,CAAA,EAAD0E,EAAA9xB,EAAAgnB,EAAC,EAAA,EAADsG,EAAAxtB,EAAAknB,EAAC,CAAA,E,wBAGO7L,EAAAyX,EAAA,OAAAhzB,EAAA6lC,CAAK,CAAA,CAAC,KAAIvlC,GAAA,EAAI,EAAI,IAAA,CACtB,IAAA6mB,EAAGjoB,GAAA,EAAHm0B,EAAAlzB,EAAAgnB,CAAG,E,CAEM,IAAAW,EAAA/nB,MAAAilB,EAAE,kCAAkC,CAAA,EAD3C6tB,GAAAxf,EAAA,C,oCAEQ,OAAArzB,EAAAmf,CAAI,CAAA,CAAC,I,gBACH,OAAAurC,C,iBACC,OAAA1qD,EAAAypB,CAAI,C,EACH,SAAA,GAAI,EAAMtK,CAAI,CAAA,CAAC,KAAO0L,C,uBAIzB,IAAA/C,EAAA/nB,MAAAilB,EAAE,qBAAqB,CAAA,EACtBmF,EAAApqB,MAAAC,EAAAmf,CAAI,CAAA,CAAC,OAAS,MAAM,EAF5B0zB,GAAAtrB,EAAA,C,+DAGU,OAAAojC,C,iBACC,OAAA3qD,EAAAypB,CAAI,C,EACH,SAAA,GAAK,EAAMtK,CAAI,CAAA,CAAC,MAAQusB,C,aANlC1rC,EAAAmf,CAAI,CAAA,CAAC,OAAS,WAAS4J,EAAAqE,CAAA,C,GAS3B,IAAAY,EAAA9tB,EAAAszB,EAAA,CAAA,EAAA5Z,EAAAoU,CAAA,EAAA,IAAA+F,EAAA7zB,EAAA8tB,EAAA,CAAA,E,MAQE,IAAAqE,EAAApzB,GAAA,E,MAAA8a,EAAAsY,EAAA,aAAAvK,CAAA,EAAA,EAAA,SAAA9nB,EAIWypB,CAAI,C,EADF,KAAAzE,EAAE,gCAAgC,CAAA,C,EAH/CxM,EAAA,QAAA6Z,MAAAryB,EAKgB6lC,CAAK,CAAA,CAAC,KAAK,OAAO7sB,EAAO,CAAC,CAAA,EAL1CnB,EAAA0P,EAAA8K,CAAA,C,UADEryB,EAAA6lC,CAAK,CAAA,CAAC,KAAK,OAAS,GAAC9c,EAAAuE,CAAA,C,GAxB3BjS,EAAA8L,CAAG,E,UAiBDpN,EAAAiU,EAAA,aAAAlG,CAAA,EAAA/N,EAAAiU,EAAA,cAAA7D,CAAA,EAAA,EAAA,SAAAnqB,EAKWypB,CAAI,C,OAHFzE,EAAE,qBAAqB,MACtBhlB,EAAAmf,CAAI,CAAA,CAAC,OAAS,eAAiB,cAAgB6F,EAAE,qBAAqB,C,GAHpFzK,EAAAyT,MAAAhuB,EAIamf,CAAI,CAAA,CAAC,MAAK,GAAA,EAAVA,CAAI,CAAA,CAAC,MAAKuS,CAAA,EArBzB7Z,EAAA0P,EAAAJ,CAAG,C,sBAoCH,IAAAuL,EAAMvzB,GAAA,EAANizB,EAAAhyB,EAAAsyB,EAAM,EAAA,E,MAAN,EAAM,SAAA1yB,EAA4DypB,CAAI,E,QACpE,KAAAzE,EAAE,6BAA6B,CAAA,C,EADjCxM,EAAA,QAAAka,MAAM1yB,EAAiF6lC,CAAK,CAAA,CAAC,KAAK,KAAKilB,EAAS,CAAA,CAAA,EAAhHjzC,EAAA0P,EAAAmL,CAAM,C,UADJ1yB,EAAA6lC,CAAK,CAAA,CAAC,KAAK,OAAS,GAAC9c,EAAA6D,CAAA,C,2DAQf,IAAA9E,EAAA/nB,MAAAilB,EAAE,wBAAwB,CAAA,EADlC6tB,GAAAhe,EAAA,C,qCAEQ,OAAA70B,EAAA6lC,CAAK,CAAA,CAAC,W,gBACJ,OAAA7lC,EAAAkpD,CAAe,C,iBACd,OAAAlpD,EAAAypB,CAAI,C,EACH,SAAA,GAAI,EAAMoc,CAAK,CAAA,CAAC,YAAc1mB,C,GAE1C,IAAA0S,EAAK3xB,EAAA20B,EAAA,CAAA,EACHZ,EAAI9zB,EADN0xB,CAAK,EACHS,EAAAlyB,EAAA6zB,EAAI,EAAA,EACJzB,EAAKtyB,EADL+zB,EAAI,CAAA,EACJra,EAAA4Y,CAAK,EAFPnX,EAAAwW,CAAK,E,aAEH,EAAK,SAAA7xB,EAAmFypB,CAAI,C,EADlE,KAAAzE,EAAE,8BAA8B,CAAA,C,EAC1DzK,EAAAiY,MAAKxyB,EAAoD6lC,CAAK,CAAA,CAAC,cAAa,GAAA,EAAnBA,CAAK,CAAA,CAAC,cAAanU,CAAA,E,cAG9E,IAAAO,EAAC3yB,GAAA,EAADmzB,EAAAryB,EAAA6xB,EAAC,EAAA,EAAe7Z,EAAA,GAAA/X,EAAAoyB,EAAA3K,CAAA,EAAA,KAAA9C,EAAE,4BAA4B,CAAA,CAAA,EAA9CnN,EAAA0P,EAAA0K,CAAC,C,UAbCjyB,EAAA6mD,CAAS,CAAA,CAAC,OAAM99B,EAAA0K,CAAA,EAAA1K,EAAAwF,EAAA,EAAA,C,iBAgBpB,IAAAgE,EAAKhzB,GAAA,EACHw1B,EAAI50B,EADNoyB,CAAK,EACHI,EAAAvyB,EAAA20B,EAAI,EAAA,EACJ5B,EAAKjzB,EADL60B,EAAI,CAAA,EACJnb,EAAAuZ,CAAK,EACL,IAAA+K,EAAIh+B,EADJizB,EAAK,CAAA,EACLP,EAAAxyB,EAAA89B,EAAI,EAAA,EAHN7iB,EAAAkX,CAAK,E,iBAEH,EAAK,SAAAvyB,EAA8EypB,CAAI,E,aAD7DzE,EAAE,6BAA6B,MAEtCA,EAAE,kCAAkC,C,GADvDzK,EAAA4Y,MAAKnzB,EAAqD6lC,CAAK,CAAA,CAAC,QAAO,GAAA,EAAbA,CAAK,CAAA,CAAC,QAAOnU,CAAA,EAFzE7Z,EAAA0P,EAAAgL,CAAK,C,UA3DHvyB,EAAA6lC,CAAK,CAAA,CAAC,SAAW,OAAM9c,EAAA8J,CAAA,EAAA7yB,EA0ClB6lC,CAAK,CAAA,CAAC,SAAW,WAAU9c,EAAA6K,EAAA,CAAA,EAAA5zB,EAgB3B6lC,CAAK,CAAA,CAAC,SAAW,SAAO9c,EAAAiL,EAAA,CAAA,C,GAQjC,IAAAnH,EAAG3sB,EAAAwtB,EAAA,CAAA,EACDuO,EAAM97B,EADR0sB,CAAG,EACDyG,EAAAlzB,EAAA67B,EAAM,EAAA,EACNC,EAAMh8B,EADN+7B,EAAM,CAAA,EACN1I,EAAAnzB,EAAA87B,EAAM,EAAA,EAANE,EAAAl8B,EAAAg8B,EAAM,CAAA,E,MAEJ,IAAAiC,EAAI3+B,GAAA,EAAJm0B,EAAAvzB,EAAA+9B,EAAI,EAAA,E,iBACFn+B,EAAA87B,CAAK,CAAA,CAAC,YAAc9W,EAAE,6BAA4B,CAAI,KAAMwG,GAAKxrB,EAAC87B,CAAK,CAAA,CAAC,WAAW,CAAA,CAAA,EAAO9W,EAAE,+BAA+B,C,GAD7HnN,EAAA0P,EAAA4W,CAAI,C,UADFn+B,EAAA87B,CAAK,CAAA,CAAC,SAAW,UAAQ/S,EAAAqL,CAAA,C,GAH/B/Y,EAAAwR,CAAG,EAlFLxR,EAAA4J,CAAA,E,mBAmFI,EAAM,SAAAjlB,EAA4CypB,CAAI,E,OACtD,EAAM,SAAAzpB,EAAsDypB,CAAI,E,aAtElDzE,EAAC,uBAAAhlB,EAAwB6lC,CAAK,CAAA,CAAC,QAAM,MAqEM7gB,EAAE,oBAAoB,MACIA,EAAE,sBAAsB,C,GApF/GlM,EAAA,SAAAmM,EAEY,GAAU,CACnBnM,EAAM,eAAc,EACpB8I,GAAI5hB,EAAC87B,CAAK,CAAA,CACZ,CAAC,EA+EEtjB,EAAA,QAAA0jB,EAA2EV,CAAK,EApFpF3jB,EAAA0P,EAAAtC,CAAA,C,UADEjlB,EAAAuqD,CAAO,IAAAvqD,EAAK87B,CAAK,CAAA,CAAC,KAAG97B,EAAI6lC,CAAK,GAAA9c,EAAA0L,EAAA,C,GA3BpCpZ,EAAA8b,CAAE,E,cACmD7c,EAAAkC,EAAAxc,EAAA87B,CAAK,CAAA,CAAC,IAAI,EAChCxhB,EAAA0P,EAAAhqB,EAAA87B,CAAK,CAAA,CAAC,GAAG,E,OAWpC/hB,EAAAkQ,EAAA,aAAAE,CAAA,E,QAMApQ,EAAAgY,EAAA,aAAA1H,CAAA,C,OAhBiBrF,EAAE,gBAAe,CAAI,MAAKhlB,EAAE87B,CAAK,CAAA,CAAC,WAAW,CAAA,MAajD9W,EAAE,uBAAsB,CAAI,KAAIhlB,EAAE87B,CAAK,CAAA,CAAC,IAAI,CAAA,MAExD9W,EAAE,sBAAsB,MAIZA,EAAE,gBAAe,CAAI,KAAIhlB,EAAE87B,CAAK,CAAA,CAAC,IAAI,CAAA,C,GATlDtjB,EAAA,QAAAyR,MAAAjqB,EAIiBuqD,CAAO,IAAAvqD,EAAK87B,CAAK,CAAA,CAAC,IAAMN,EAAK,EAAKqvB,EAAI7qD,EAAC87B,CAAK,CAAA,CAAA,EAE7DtjB,EAAA,QAAAuZ,MAIgBiF,EAAMh3B,EAAC87B,CAAK,CAAA,CAAA,EAvBhCjkB,EAAA0P,EAAA4P,CAAE,C,GAFN9b,EAAA6b,CAAE,EAAFrf,EAAA0P,EAAA2P,CAAE,C,UADAl3B,EAAAw6B,CAAM,CAAA,CAAC,QAAMzR,EAAAmgB,CAAA,C,GAiIjB,IAAAsZ,EAAAtiD,EAAA4sB,EAAA,CAAA,EAOEi+B,EAAK5qD,EAPPqiD,CAAA,EAOE5oC,EAAAmxC,CAAK,EACL,IAAApgB,EAAMzqC,EADN6qD,EAAK,CAAA,EACLj3B,GAAA1zB,EAAAuqC,EAAM,EAAA,EARRtvB,EAAAmnC,CAAA,EAAA,IAAAnmB,EAAAn8B,EAAAsiD,EAAA,CAAA,E,MAYE,IAAAlmB,EAACh9B,GAAA,EAAD40B,EAAA9zB,EAAAk8B,EAAC,EAAA,EAAelkB,EAAA,GAAA/X,EAAA6zB,EAAApM,CAAA,EAAA,KAAA9C,EAAE,aAAY,CAAI,IAAGhlB,EAAHiY,CAAG,CAAA,CAAA,CAAA,CAAA,EAArCJ,EAAA0P,EAAA+U,CAAC,C,UADCt8B,EAAAiY,CAAG,GAAA8Q,EAAAwgB,CAAA,C,eAJLxvB,EAAAgxC,EAAK,aAAAjjC,CAAA,EAAL/N,EAAAgxC,EAAK,cAAA5gC,CAAA,EACL,EAAM,SAAA,CAAAnqB,EAAuDiY,CAAG,E,cADG+M,EAAE,YAAY,MAAgBA,EAAE,YAAY,MAC5CA,EAAE,YAAY,C,GARnFlM,EAAA,SAAA0pC,EAEY,GAAU,CACnB1pC,EAAM,eAAc,EACpB8xC,EAAM,CACR,CAAC,EAEArwC,EAAAwwC,MAAK/qD,EAAyHogB,CAAI,EAAA,GAAA5f,EAAJ4f,EAAIsR,CAAA,CAAA,E,kCA7I/H,C,gsCC7JR,SAAAg6B,GAAA,EAAA,EAAA,C,QAmBE,IAgBMC,EAAS,CACZ,CAAA,GAAI3mC,EAAE,4BAA4B,CAAA,EAClC,CAAA,GAAIA,EAAE,4BAA4B,CAAA,EAClC,CAAA,IAAKA,EAAE,6BAA6B,CAAA,EACpC,CAAA,IAAKA,EAAE,2BAA2B,CAAA,EAClC,CAAA,KAAMA,EAAE,gCAAgC,CAAA,EACxC,CAAA,KAAMA,EAAE,gCAAgC,CAAA,C,EAIrC4mC,EAAO,KACP7gC,EAAM,GAAK6gC,EAEXjP,EAAK,C,CACR,qBAAsB,aAAc,EAAI5xB,EAAM,CAAAA,EAAK,EAAIA,EAAK,EAAIA,EAAK,GAAKA,EAAK,GAAKA,CAAG,C,GACvF,iCAAkC,0BAA2B,GAAKA,EAAM,CAAAA,EAAK,EAAIA,EAAK,EAAIA,EAAK,GAAKA,EAAK,GAAKA,CAAG,C,GACjH,wBAAyB,iBAAkB,KAAc,CAAA,IAAa,KAAa6gC,EAAM,EAAIA,EAAM7gC,CAAG,C,GACtG,4BAA6B,qBAAsB,EAAIA,EAAM,CAAA6gC,EAAM7gC,EAAK,EAAIA,EAAK,EAAIA,EAAK,GAAKA,CAAG,C,GAGrG,SAAS8gC,EAAQ,EAAS,CAIxB,OAHI3V,EAAUnrB,GAAQ,EAAU/F,EAAE,aAAY,CAAI,MAAOkxB,EAAUnrB,CAAG,CAAA,EAClEmrB,EAAU0V,GAAS,EAAU5mC,EAAE,cAAa,CAAI,MAAOkxB,EAAU0V,CAAI,CAAA,EAElE5mC,EAAE,gBAAe,CAAI,MAAO,KAAK,MAAMkxB,EAAU,EAAM,CAAA,CAAA,CAChE,CAEA,IAAM4V,GAAa,EAAS,EAAO,KAChCtX,EAAQ,SAASr1B,CAAI,EAAIq1B,EAAO,CAAA,GAAOA,EAASr1B,CAAI,CAAA,CAAE,MAAM,EAAG,IAAM0I,EAAI4O,CAAC,EAAA,CAAG,IAAK,GAAO,CACxF,OAAOyf,CAAO,EACdA,IAAY6V,EAAQ/mC,EAAE,gBAAe,CAAI,OAAQ6mC,EAAQ3V,CAAO,CAAA,CAAA,EAAO2V,EAAQ3V,CAAO,C,GAGpFrf,GAAW,EAAQ,IAAI,CAC1B1X,GAAQuX,EAAO,MAAI,CAAGs1B,KAAUA,IAAS7sC,CAAI,EAAIuX,EAAa,CAAA,GAAAA,EAAM,CAAGvX,EAAM6F,EAAE,sBAAqB,CAAI,KAAM7F,CAAI,CAAA,CAAA,CAAA,EAE/G8sC,EAAK,CACT,OAAQ,gBACR,OAAQ,gBACR,SAAU,aACV,QAAS,a,EAGL/xB,EAAW5P,GAAc,EAE3BmG,EAAOpvB,EAAO,IAAI,EAClB+e,EAAO/e,EAAO,EAAE,EAChB4uB,EAAU5uB,EAAO,EAAI,EAEzB,eAAemvB,GAAO,CACpBrX,EAAA8W,EAAU,EAAI,EAEd,GAAI,CACF9W,EAAAsX,EAAO,MAAKnJ,EAAA,IAAK,MAAM;;;;;;;;;;;;;;GAAK,EAAA,EAAA,EAC5BnO,EAAAiH,EAAI9e,EAAGmvB,CAAI,CAAA,CAAC,OAAO,KAAI,EAAA,CACzB,OAASjG,EAAQ,CACf0P,EAAS,MAAM1P,CAAM,CACvB,QAAU,CACRrR,EAAA8W,EAAU,EAAK,CACjB,CACF,CAEAO,EAAI,EAEJ,eAAe3X,EAAO,EAAS,EAAQ,CA2BjC,MA1BeqhB,EAAS,YAEpB5S,EAAA,IAAA,M;;;;;;;;;;;;;;;;;aAmBFw1B,C,EAEJryB,C,GAGQ,MAAM+F,EAAI,CACtB,CAEA,eAAe07B,EAAW,EAAO,CAC/B,IAAMl+B,EAAQlV,EAAM,cACd0N,EAAOwH,EAAM,QAAQ,GAEtBxH,IAEL,MAAMlF,EAAI,yFAAA,CAEN,KAAMkF,CAAI,EACZxB,EAAE,gCAAgC,CAAA,EAGpC,EAAM,MAAQ,GAChB,CAEA,eAAe1D,EAAK,EAAO,EAAW,EAAQ,CAGxC,MAFe4Y,EAAS,YAAO5S,EAAA,IAAW,MAAMzE,EAAOoD,CAAS,EAAGwE,CAAM,GAEnE,MAAM+F,EAAI,CACtB,CAEA,IAAM27B,MACJ7qC,EAAI,4DAAA,CAAA,EAGF0D,EAAE,6BAA6B,CAAA,EAGnC,SAASonC,EAAS,EAAK,CACrB,GAAK,QAAQpnC,EAAE,gCAAgC,CAAA,EAE/C,OAAO1D,EAAI,wFAAA,CAEP,KAAG,EACL0D,EAAE,gCAAgC,CAAA,CAEtC,CAEA,SAASqnC,EAAQ,EAAK,CACpB,GAAK,QAAQrnC,EAAE,+BAA+B,CAAA,EAE9C,OAAO1D,EAAI,uEAAA,CAEP,KAAG,EACL0D,EAAE,yBAAyB,CAAA,CAE/B,CAEA,SAASu5B,GAAS,CAChB,GAAK,QAAQv5B,EAAE,8BAA8B,CAAA,EAE7C,OAAO1D,EAAI,8DAAA,CAAA,EAGT0D,EAAE,uBAAuB,CAAA,CAE7B,C,uBAICgD,GAAOT,EAAA,CAAA,CAAA,C,SAEP,IAAAJ,EAAGzmB,GAAA,EAAH8b,EAAA/a,EAAA0lB,EAAG,EAAA,EAA4D/O,MAAA1W,EAAA8a,EAAA0d,EAAS,MAAM,OAAO,CAAA,EAArFriB,EAAA0P,EAAAJ,CAAG,C,SAES,IAAAW,EAAAnmB,MAAAqjB,EAAE,gBAAgB,CAAA,EAA9ByT,GAAIlR,EAAA,C,4DACF4Q,GAAOrL,EAAA,C,eAAW,OAAAoN,EAAS,K,IAE3B,IAAArN,EAAGjrB,EAAAkrB,EAAA,CAAA,EAAHI,EAAArrB,EAAAgrB,CAAG,E,CAGO,IAAA/E,EAAAnmB,MAAAqjB,EAAE,uBAAuB,CAAA,EAC1BmF,EAAAxoB,MAAAqjB,EAAE,sBAAsB,CAAA,EAH/BqH,EAAAa,EAAA,C,4FAKe,IAAApF,EAAAnmB,MAAAqjB,EAAE,sBAAsB,CAAA,EAArC6S,EAAK1K,EAAA,C,yBAAmE,WAAAtU,EAAM,CAAG,KAAIvX,EAAJ8e,CAAI,CAAA,EAAI4E,EAAE,yBAAyB,CAAA,EAA5E,IAAA,OAAU,CAAE,OAAA1jB,EAAA8e,CAAI,C,EAAhB,IAAA,MAAU,EAAA,CAAEjH,EAAAiH,EAAIsR,EAAA,EAAA,C,gCAInD,KAAM1M,EAAE,2BAA2B,EAAG,MAAK1jB,EAAEmvB,CAAI,CAAA,CAAC,OAAO,UAAW,KAAM,E,GAC1E,KAAMzL,EAAE,wBAAwB,EAAG,MAAKsC,EAAA,KAAO,OAAQ,KAAM,E,GAC7D,KAAMtC,EAAE,0BAA0B,EAAG,MAAKsC,EAAA,KAAO,SAAU,KAAM,E,GACjE,KAAMtC,EAAE,uBAAuB,EAAG,MAAOsG,GAAGhqB,EAACmvB,CAAI,CAAA,CAAC,OAAO,SAAS,C,IALvEygB,GAAA7jB,EAAA,C,uEAYM,IAAAvF,EAAAnmB,MAAAqjB,EAAE,yBAAyB,CAAA,EAC5BmF,EAAAxoB,MAAAqjB,EAAE,wBAAwB,CAAA,EAHjCqH,EAAAmB,EAAA,C,oFAKER,EAAGxrB,EAAAynC,CAAA,EAAHvb,EAAA7rB,EAAAmrB,CAAG,E,MAEC,IAAA8P,EAAGj8B,GAAA,EAAHuX,MAAAtW,EAAAg7B,EAAG,MAAAx7B,EAAMmvB,CAAI,CAAA,CAAC,OAAO,OAAO,CAAA,EAA5B5Y,EAAA0P,EAAAuV,CAAG,C,UADDx7B,EAAAmvB,CAAI,CAAA,CAAC,OAAO,SAAO1H,EAAAqE,CAAA,C,GAIvB,IAAAnF,EAAKrmB,EAAA8rB,EAAA,CAAA,EAAL1D,EAAAnoB,EAAAomB,CAAK,EAEHuK,EAAK5wB,EAAAooB,CAAA,EAFP3O,EAAA4M,CAAK,EAAL,IAAA+K,EAAApxB,EAAAqmB,EAAK,CAAA,E,MAMH,IAAA8B,EAAAjpB,GAAA,EAAAopB,EAAAzoB,EAAAsoB,EAAA,EAAA,EAKE3R,EAAA,GAAA1W,EAAAwoB,EAAApC,CAAA,EAAA,KAAA9C,EAAE,0BAA0B,CAAA,CAAA,EAL9BxM,EAAA,QAAAuR,MAGgBzI,EAAI,uDAAA,CAAA,EAA6D0D,EAAE,gCAAgC,CAAA,CAAA,EAHnHnN,EAAA0P,EAAAwC,CAAA,C,UADEzoB,EAAAmvB,CAAI,CAAA,CAAC,OAAO,SAAO1H,EAAAuE,CAAA,C,GAVzBjS,EAAA2R,CAAG,EAqBH,IAAAO,EAAG3rB,EArBHorB,EAAG,CAAA,EAsBD6E,EAAKhwB,EADP0rB,CAAG,EAEC4F,EAAAtxB,EADFgwB,CAAK,EACHjY,EAAAuZ,CAAA,EAAA,IAAAvB,EAAAhwB,EAAAuxB,CAAA,EADF9X,EAAAwW,CAAK,EAAL,IAAAwB,EAAAzxB,EAAAiwB,EAAK,CAAA,E,MAUH,IAAA5H,EAAMnpB,GAAA,EAANgxB,EAAArwB,EAAAwoB,EAAM,EAAA,EACJ7R,EAAA,GAAA1W,EAAAowB,EAAAhK,CAAA,EAAA,KAAA9C,EAAE,uBAAuB,CAAA,CAAA,EAD3BxM,EAAA,QAAAyR,MAAiEpR,EAAM,CAAG,YAAa,EAAE,EAAImM,EAAE,+BAA+B,CAAA,CAAA,EAA9HnN,EAAA0P,EAAA0C,CAAM,C,UADJ3oB,EAAAmvB,CAAI,CAAA,CAAC,OAAO,aAAW1H,EAAA6D,CAAA,C,GAV7BvR,EAAAkS,CAAG,E,2BAEC9S,GAAA0Y,EAAA7xB,EAEQmvB,CAAI,CAAA,CAAC,OAAO,aAAe,SAAS,E,uBAnB5CnvB,EAAAmvB,CAAI,CAAA,CAAC,OAAO,QAAUzL,EAAE,+BAA+B,EAAIA,EAAE,+BAA+B,MAsB5FA,EAAE,0BAA0B,C,GArB5BxM,EAAA,SAAAga,EAA8F05B,CAAU,EAgBxG1zC,EAAA,SAAA2a,EAGY,GAAUta,EAAM,CAAG,YAAaC,EAAM,cAAc,KAAK,EAAIkM,EAAE,iCAAiC,CAAA,CAAA,E,6CAe1G,IAAA8C,EAAAnmB,MAAAqjB,EAAE,0BAA0B,CAAA,EAC7BmF,EAAAxoB,MAAAqjB,EAAE,yBAAyB,CAAA,EAHlCqH,EAAAmH,EAAA,C,0EAOY,IAAA1L,EAAAnmB,MAAAk1B,EAAQ80B,EAASrqD,EAAEmvB,CAAI,CAAA,CAAC,OAAO,kBAAkB,CAAA,EAF3DoiB,GAAAtrB,EAAA,C,YACQ,OAAAjmB,EAAAmvB,CAAI,CAAA,CAAC,OAAO,kB,6BAER,SAAA,GAAS5X,EAAM,CAAG,mBAAoB,OAAOmzC,CAAI,CAAA,EAAKhnC,EAAE,4BAA4B,CAAA,C,0CAI/E,IAAA8C,EAAAnmB,MAAAqjB,EAAE,aAAa,CAAA,EAASmF,EAAAxoB,MAAAqjB,EAAE,YAAY,CAAA,EAAzDqH,EAAO0H,EAAA,C,yEACL,IAAAtG,EAAGzsB,GAAA,EAAHua,EAAAkS,EAAG,OACKkvB,GAAK,CAAKjR,EAAOzzB,EAAK8zC,EAAOvX,KAAU9I,GAAK,EAAA,IAAA,C,wBAAlC,IAAAA,MAAMpqC,EAAAqnB,CAAA,CAAA,CAAA,GAAC1Q,MAAI3W,EAAAqnB,CAAA,CAAA,CAAA,GAACojC,MAAMzqD,EAAAqnB,CAAA,CAAA,CAAA,GAAC6rB,MAAQlzC,EAAAqnB,CAAA,CAAA,CAAA,G,CAEjC,IAAAb,EAAAnmB,MAAAqjB,EAAC,SAAU/M,EAAG,GAAA,CAAA,EACdkS,EAAAxoB,MAAA,OAAML,EAACmvB,CAAI,CAAA,CAAC,OAAOib,EAAK,EAAA,CAAA,EACtBthB,EAAAzoB,MAAAmqD,EAAUtX,EAAO,EAAEuX,EAAK,EAAAzqD,EAAEmvB,CAAI,CAAA,CAAC,OAAOib,EAAK,EAAA,CAAA,EAHrDmH,GAAAtrB,EAAA,C,6EAIY,SAAA,GAAY1O,EAAM,EAAI6yB,EAAK,GAAG,OAAOwK,CAAO,CAAA,EAAKlxB,EAAE,eAAe,CAAA,C,MANlF3J,EAAAoS,CAAG,EAAH5V,EAAA0P,EAAAkG,CAAG,C,uCAcG,IAAA3F,EAAAnmB,MAAAqjB,EAAE,6BAA6B,CAAA,EAChCmF,EAAAxoB,MAAAqjB,EAAE,4BAA4B,CAAA,EAHrCqH,EAAA8H,EAAA,C,yGAQM,CAAA,MAAOnP,EAAE,2BAA2B,CAAA,EACpC,CAAA,WAAYA,EAAE,0BAA0B,CAAA,EACxC,CAAA,UAAWA,EAAE,+BAA+B,CAAA,C,GALhD6tB,GAAAre,EAAA,C,YACQ,OAAAlzB,EAAAmvB,CAAI,CAAA,CAAC,OAAO,mB,6BAMR,SAAA,GACT5X,EAAM,CAAG,qBAAmB,EAAImM,EAAE,+BAA+B,CAAA,C,uBAK1D,IAAA8C,EAAAnmB,MAAAL,EAAAmvB,CAAI,CAAA,CAAC,OAAO,qBAAmB,CAAA,CAAA,EADvCuF,GAAAzO,EAAA,C,yCAEY,OAAAjmB,EAAAmvB,CAAI,CAAA,CAAC,e,EACL,SAAA,GAAwB5X,EAAM,CAAG,qBAAmB,EAAImM,EAAE,uCAAuC,CAAA,C,aAJ3G1jB,EAAAmvB,CAAI,CAAA,CAAC,OAAO,sBAAwB,WAAS1H,EAAA8J,CAAA,C,sDAUjD4lB,GAAUlxB,EAAA,C,mCAAa,OAAAjmB,EAAAmvB,CAAI,CAAA,CAAC,U,EAAwB,WAAAD,E,iCADlDlvB,EAAAmvB,CAAI,CAAA,CAAC,WAAW,QAAM1H,EAAA0K,CAAA,C,kBAIP,IAAA3L,EAAAnmB,MAAAqjB,EAAE,qBAAqB,CAAA,EAASmF,EAAAxoB,MAAAqjB,EAAE,oBAAoB,CAAA,EAAzEqH,EAAOgQ,EAAA,C,oFACLnF,EAAE11B,EAAA8zC,CAAA,EAAF/5B,EAAA2b,EAAE,OAAA51B,EACMmvB,CAAI,CAAA,CAAC,OAAO,YAAe,GAAKxY,EAAI,KAAG,EAAZ,IAAG,CAClC,IAAAkf,EAAEj2B,GAAA,EACA+c,EAAIpc,EADNs1B,CAAE,EACAnF,EAAAvwB,EAAAwc,EAAI,EAAA,EACJiK,EAAItmB,EADJqc,EAAI,CAAA,EACJiU,EAAAzwB,EAAAymB,EAAI,EAAA,EACJW,EAAIjnB,EADJsmB,EAAI,CAAA,EACJkK,EAAAvwB,EAAAgnB,CAAI,E,wCAGA7D,EAAE,sBAAqB,CAAI,IAAKsG,GAAGhqB,EAAC2W,CAAG,CAAA,CAAC,SAAS,CAAA,CAAA,C,4CAEjDqT,GAAGhqB,EAAC2W,CAAG,CAAA,CAAC,YAAa+M,EAAE,uBAAuB,CAAA,C,mBAH5C1jB,EAAA2W,CAAG,CAAA,CAAC,QAAU,WAAU8Q,EAAA6K,CAAA,EAAA7K,EAAAwF,EAAA,EAAA,C,GAF9BlT,EAAAwN,CAAI,EAAJ,IAAA4T,EAAA76B,EAAAinB,EAAI,CAAA,E,MAUF,IAAAwL,EAAGpzB,GAAA,EACD8wB,EAAMlwB,EADRwyB,CAAG,EACD1B,EAAAlxB,EAAAswB,EAAM,EAAA,EACNM,EAAMzwB,EADNmwB,EAAM,CAAA,EACNa,EAAAnxB,EAAA4wB,EAAM,EAAA,EAFRhX,EAAAgZ,CAAG,E,8BAC0ErP,EAAE,wBAAwB,MACjBA,EAAE,uBAAuB,C,GAD7GxM,EAAA,QAAAuZ,MAAuDq6B,EAAQ9qD,EAAC2W,CAAG,CAAA,CAAC,GAAG,CAAA,EACvEO,EAAA,QAAA6Z,MAAiEg6B,EAAO/qD,EAAC2W,CAAG,CAAA,CAAC,GAAG,CAAA,EAFlFJ,EAAA0P,EAAA8M,CAAG,C,UADD/yB,EAAA2W,CAAG,CAAA,CAAC,QAAU,UAAQ8Q,EAAAiL,CAAA,C,GAZ5B3Y,EAAA8b,CAAE,E,iBAEA3b,GAAA0M,EAAI,EAAA,kBAAwB+jC,EAAK3qD,EAAC2W,CAAG,CAAA,CAAC,QAAK,IAAA,E,OAEzCqC,EAAA8X,EAAA,GAAA9wB,EAAA2W,CAAG,CAAA,CAAC,WAAS,GAAA,IAAA,C,OAHiB3W,EAAA2W,CAAG,CAAA,CAAC,IAAI,MAAM,EAAG,CAAC,MACFg0C,EAAK3qD,EAAC2W,CAAG,CAAA,CAAC,OAAS+M,EAAC,wBAAA1jB,EAAyB2W,CAAG,CAAA,CAAC,OAAK,EAAM3W,EAAA2W,CAAG,CAAA,CAAC,K,GAFlHJ,EAAA0P,EAAA4P,CAAE,C,GAFN9b,EAAA6b,CAAE,EAwBF,IAAAxC,EAAG9yB,EAxBHs1B,EAAE,CAAA,EAwBF0F,EAAA/6B,EAAA6yB,CAAG,E,CAEM,IAAA5M,EAAAnmB,MAAAqjB,EAAE,wBAAwB,CAAA,EACzBmF,EAAAxoB,MAAA,OAAML,EAACmvB,CAAI,CAAA,CAAC,OAAO,iBAAmB,CAAC,CAAA,EACpCrG,EAAAzoB,MAAA,CAAA,EAAG,GAAI,GAAI,IAAK,GAAG,CAAA,CAAE,IAAK,GAAI,CACtC,OAAOqqD,CAAI,EACXA,EAAOhnC,EAAE,sBAAqB,CAAI,MAAOgnC,CAAI,CAAA,EAAMhnC,EAAE,uBAAuB,C,IAL/E6tB,GAAAjW,EAAA,C,4EAOY,SAAA,GAAS/jB,EAAM,CAAG,gBAAiB,OAAOmzC,CAAI,CAAA,EAAKhnC,EAAE,yBAAyB,CAAA,C,GAE1F,IAAA0N,EAAM9wB,EAAAg7B,EAAA,CAAA,EAANtJ,EAAA7xB,EAAAixB,EAAM,EAAA,EACNuJ,EAAMr6B,EADN8wB,EAAM,CAAA,EACNa,EAAA9xB,EAAAw6B,EAAM,EAAA,EAXR5gB,EAAAqZ,CAAG,E,8BAUwD1P,EAAE,qBAAqB,MACZA,EAAE,sBAAsB,C,GAD5FxM,EAAA,QAAAka,EAAiDy5B,CAAK,EACtD3zC,EAAA,QAAAyjB,EAA2DsiB,CAAM,E,4CAIrE8L,GAAartB,EAAA,C,0BAEb+rB,G,KAAc,EAAA,C,0BA9JhB1tC,EAAAwR,CAAG,E,yCARHvrB,EAAA2uB,CAAO,GAAA,CAAA3uB,EAAKmvB,CAAI,EAAA1H,EAAAP,CAAA,EAAAlnB,EAEVmvB,CAAI,EAAA1H,EAAA+J,EAAA,EAAA,EAAA/J,EAAAgE,GAAA,CAAA,C,aAJP,C,srBC1LR,SAAA6/B,GAAA,EAAA,EAAA,C,QAIE,IAOMC,EAAInqD,MAAY,KAAK,IAAI,EAAC,GAAA4kB,EAAA,OAAY,IAAK,GAAUwlC,EAAM,KAAK,CAAA,CAAA,EAChEC,EAAIrqD,MAAY,IAAI,KAAK,IAAG4kB,EAAA,OAAQ,OAAQ,CAAC,CAAA,EAC7C0lC,EAAKtqD,MAAY,KAAK,IAAGC,EAACoqD,CAAI,EAAG,EAAK,CAAC,CAAA,EACvCzjC,EAAK5mB,MAAA4kB,EAAA,OAAmB,QAAQ,EAAK,IAAU2lC,EAAMH,EAAM,MAAO,CAAC,CAAA,EAErEI,EAAUtqD,EAAO,IAAI,EAEzB,SAASuqD,EAAM,EAAO,CACpB,OAASn0C,EAAQ,IAAO,KAAK,IAAGsO,EAAA,OAAQ,OAAQ,CAAC,EAAK,GACxD,CAEA,SAAS8lC,EAAI,EAAO,EAAG,CACrB,IAAMC,EAASvxC,IAAU,EAAI,EAAI,KAAK,IAAKA,EAAKnZ,EAAGkqD,CAAI,EAAK,IAAW,CAAC,EAClES,EAAI,IAAOD,EACXE,EAAS,KAAK,IAAI,EAAG5qD,EAAEqqD,CAAK,EAAG,EAAGK,CAAM,EAE9C,MAAM,CACC,KAAAG,EAAC,MACD,KAAAA,EAAC,GAAIF,EAAIC,IACT,KAAAC,EAAC,GAAIF,EAAC,GAAIE,EAAID,EAAM,GAAID,IACxB,KAAAE,EAAC7qD,EAAGqqD,CAAK,EAAGO,EAAM,GAAID,IACtB,KAAAE,EAAC7qD,EAAGqqD,CAAK,EAAA,GAAIM,EAAC,GAAIE,EAAC7qD,EAAGqqD,CAAK,EAAA,GAAIM,EAAIC,IACnC,KAAAC,EAAC7qD,EAAGqqD,CAAK,EAAA,MACd,GACA,CAAA,CAAA,KAAK,GAAG,CACZ,CAEA,IAAMS,EAAK/qD,MAAA4kB,EAAA,OACF,O,CACF,EAAG,KAAK,OAAKA,EAAA,OAAS,OAAS,GAAK,CAAC,EAAUA,EAAA,OAAA,OAAS,CACtD,CAAA,CAAA,QAAQ,EAAI,EAAO,IAAQjC,EAAI,QAAQW,CAAE,IAAMhN,CAAK,CAAA,CACpD,IAAK,IAAE,CAAQ,KAAI,MAAKsO,EAAA,OAAStB,EAAE,EAAA,E,IAK7C,IAAA0nC,EAAMjrD,GAAA,EACJkrD,EAAU9qD,EADZ6qD,CAAM,EAEFxlC,EAAIrlB,EADN8qD,CAAU,EACRnxC,EAAA1Z,EAAAolB,EAAI,EAAA,EACJW,EAAI9lB,EADJmlB,EAAI,CAAA,EACJ8B,EAAAlnB,EAAA+lB,EAAI,EAAA,EAFNxN,EAAAsyC,CAAU,EAKV,IAAAxmC,EAAGpkB,EALH4qD,EAAU,CAAA,EAMR7kC,EAAAjmB,EADFskB,CAAG,EACDpN,EAAA+O,EAAA,UAAA,aAAA,EAME,IAAAs1B,EAAIv7C,EANNimB,CAAA,EAME/O,EAAAqkC,EAAI,KAA+B,GAAI,EAAvCrkC,EAAAqkC,EAAI,KAAyC,GAAC,EAA9CrkC,EAAAqkC,EAAI,KAAgD,GAAI,EAAxD,IAAA/2B,EAAAtkB,EAAAq7C,CAAI,EAEY7iC,EAAA8L,EAAA,OAAAC,EAAA,OAAA,GAAcwlC,EAAM,KAAG,EAAvB,EAAK,IAAA,CACnB,IAAAhnC,EAAA5jB,GAAA,E,YAAA,EAAAc,GAAA8iB,EAAA,EAAA,YAAA,KAAA6G,EAAA,CAEuB,iBAAAhqB,EAAAmqD,CAAK,CAAA,CAAC,QAAU,EAClB,eAAAnqD,EAAAuqD,CAAO,CAAA,EAAE,QAAKvqD,EAAKqW,CAAK,C,GAH7Ce,EAAA+L,EAAA,IAAAgC,CAAA,C,EAII,KAAAslC,EAAGzqD,EAACmqD,CAAK,CAAA,CAAC,MAAKnqD,EAAEqW,CAAK,EAAArW,EAAGoqD,CAAI,CAAA,CAAA,C,EAJjCl1C,EAAA0P,EAAAzB,CAAA,C,cAQcvK,EAAAuR,EAAA,OAAAxF,EAAA,OAAA,GAAcwlC,EAAM,KAAG,EAAvB,EAAK,IAAA,CACnB,IAAAc,EAAAxrD,GAAA,EAAA2X,EAAA6zC,EAAA,SAKS,GAAI,E,OALb7zC,EAAA6zC,EAAA,IAAAjrD,EAEIqW,CAAK,EAAArW,EAAGoqD,CAAI,CAAA,EAFhBhzC,EAAA6zC,EAAA,QAAAjrD,EAIQoqD,CAAI,CAAA,C,GAJZj0C,EAAA,aAAA80C,MAAA3qD,EAMsBiqD,EAAO,CAAA,GAAAvqD,EAAQmqD,CAAK,EAAE,MAAKnqD,EAALqW,CAAK,CAAA,EAAA,EAAA,CAAA,EANjDF,EAAA,aAAA80C,MAAA3qD,EAOsBiqD,EAAU,IAAI,CAAA,EAPpCp0C,EAAA,QAAA80C,MAAA3qD,EAQiBiqD,EAAO,CAAA,GAAAvqD,EAAQmqD,CAAK,EAAE,MAAKnqD,EAALqW,CAAK,CAAA,EAAA,EAAA,CAAA,EAR5CF,EAAA,OAAA80C,MAAA3qD,EASgBiqD,EAAU,IAAI,CAAA,EAT9Br1C,EAAA0P,EAAAqmC,CAAA,C,GAlBJvyC,EAAAyN,CAAA,EAAA,IAAAoE,EAAAnqB,EAAA+lB,EAAA,CAAA,E,MAmCE,IAAA+D,EAAAxqB,GAAA,EAKE2lC,EAAMnlC,EALRgqB,CAAA,EAKE3C,EAAApnB,EAAAklC,EAAM,EAAA,EAANpW,EAAA7uB,EAAAilC,CAAM,EAENtU,EAAI3wB,EAAA6uB,CAAA,EAAJE,EAAAhvB,EAAA4wB,EAAI,EAAA,EAPNrY,EAAAwR,CAAA,E,UAAAvR,GAAAuR,EAAA,SAAA/E,GAAA,GAAA,EAAA,EAKUxN,EAAA4P,EAAAvnB,EAAAuqD,CAAO,CAAA,CAAC,KAAK,E,kBAEf5yC,EAAAwX,EAAAnvB,EAAAuqD,CAAO,CAAA,CAAC,KAAK,C,OALNC,EAAKxqD,EAACuqD,CAAO,CAAA,CAAC,KAAK,MAIhCloC,EAAE,oBAAmB,CAAI,MAAKriB,EAAEuqD,CAAO,CAAA,CAAC,KAAK,CAAA,C,GAN/Cr1C,EAAA0P,EAAAsF,CAAA,C,UADElqB,EAAAuqD,CAAO,GAAAnkC,EAAAP,CAAA,C,GAnCbnN,EAAA8L,CAAG,EAgDH,IAAA6F,EAAGjqB,EAhDHokB,EAAG,CAAA,EAgDH5L,EAAAyR,EAAG,OAAArqB,EACK8qD,CAAK,EAAI,GAAMI,EAAK,IAAE,EAAb,IAAI,CACjB,IAAAh6B,EAAItxB,GAAA,EAAJyvB,EAAAlvB,EAAA+wB,EAAI,EAAA,E,MAAJvY,GAAAuY,EAAI,SAAA/L,GAAA,GAAA,EAAA,EAAkCxN,EAAA0X,EAAArvB,EAAAkrD,CAAI,CAAA,CAAC,MAAM,KAAK,C,EAAnC,KAAAV,EAAKxqD,EAACkrD,CAAI,CAAA,CAAC,EAAE,CAAA,C,EAAhCh2C,EAAA0P,EAAAsM,CAAI,C,GAFRxY,EAAA2R,CAAG,EAMH,IAAAwB,EAAKzrB,EANLiqB,EAAG,CAAA,EAOD8gC,EAAOjrD,EADT2rB,CAAK,EACH0D,EAAApvB,EAAAgrD,EAAO,EAAA,EACPr/B,EAAK1rB,EADL+qD,CAAO,EACAjgC,GAAEhrB,EAAT4rB,CAAK,EAAMC,EAAE7rB,EAANgrB,EAAE,EAAEuE,EAAAtvB,EAAA4rB,EAAE,EAAA,EAA8Bq/B,EAAEhrD,EAAlC2rB,CAAE,EAA8B4D,GAAAxvB,EAAAirD,EAAE,EAAA,EAAtC1yC,EAAAwS,EAAE,EAATxS,EAAAoT,CAAK,EACL,IAAAG,GAAK7rB,EADL0rB,CAAK,EACLlT,EAAAqT,GAAK,OAAAtH,EAAA,OACa,GAAOwlC,EAAM,KAAG,EAAhB,IAAK,CACnB,IAAAkB,EAAExrD,GAAA,EAAE0wB,EAAErwB,EAANmrD,CAAE,EAAEv7B,EAAA3vB,EAAAowB,EAAE,EAAA,EAAoBE,EAAErwB,EAAxBmwB,CAAE,EAAoBP,EAAA7vB,EAAAswB,EAAE,EAAA,EAA5B/X,EAAA2yC,CAAE,E,OAAM1zC,EAAAmY,EAAA9vB,EAAAmqD,CAAK,CAAA,CAAC,KAAK,EAAWxyC,EAAAqY,EAAAhwB,EAAAmqD,CAAK,CAAA,CAAC,KAAK,C,GAAzCj1C,EAAA0P,EAAAymC,CAAE,C,GAFN3yC,EAAAuT,EAAK,EAHPvT,EAAAmT,CAAK,EA5DPnT,EAAAqyC,CAAM,E,kCAOF3zC,EAAA+O,EAAA,aAAAqB,CAAA,E,kCAJyBnF,EAAE,oBAAmB,CAAI,KAAIriB,EAAJkqD,CAAI,CAAA,CAAA,MAQzC7nC,EAAE,uBAAsB,CAAI,MAAKsC,EAAA,MAAE,MAAK3kB,EAAL2mB,CAAK,EAAE,KAAIhC,EAAA,OAAS,OAAQ,KAAI3kB,EAAJkqD,CAAI,C,OAmDjE7nC,EAAE,kBAAkB,MAAYA,EAAE,oBAAoB,C,GA9DzEnN,EAAA0P,EAAAmmC,CAAM,E,GAFC,C,oJC7CR,SAAAQ,GAAA,EAAA,EAAA,C,QAME,IAAI70C,EAAKjW,EAAA,CAAY,QAAS,GAAM,QAAS,KAAM,KAAM,IAAI,CAAA,EAE7D,eAAekkD,GAAM,CACnB,EAAM,QAAU,GAChB,EAAM,QAAU,KAEhB,GAAI,CACF,EAAM,KAAO,MAAKhgC,EAAA,KAAA,CACpB,OAASkD,EAAQ,CACf,EAAM,QAAUA,EAAO,OACzB,QAAU,CACR,EAAM,QAAU,EAClB,CACF,CAEA88B,EAAG,E,uBAIFt/B,GAAOT,EAAA,CAAA,CAAA,C,QAEP,IAAAJ,EAAGjkB,GAAA,EACDglB,EAAI3kB,EADN4jB,CAAG,EACD3K,EAAAhZ,EAAA0kB,EAAI,EAAA,EACJ6B,EAAMtmB,EADNykB,EAAI,CAAA,EACJ8B,EAAAxmB,EAAAumB,EAAM,EAAA,EAFR1O,EAAA8L,CAAG,E,MACK7M,EAAAkC,EAAAnD,EAAM,OAAO,E,QACoC,KAAA2L,EAAE,UAAU,CAAA,C,EAAnExM,EAAA,QAAAuR,EAAiDu9B,CAAG,EAFtDzvC,EAAA0P,EAAAJ,CAAG,C,yBAKcpO,EAAA+T,MAAAxF,EAAA,aAAAjO,EAAM,SAAMiuC,CAAG,E,gBAR9BjuC,EAAM,QAAO0P,EAAAP,CAAA,EAERnP,EAAM,QAAO0P,EAAAgE,EAAA,CAAA,EAAAhE,EAAAwF,EAAA,EAAA,C,aAJf,C,4iDCtBR,SAAA4gC,GAAA,EAAA,EAAA,C,QAkBE,IA6BMC,EAAK,CAAK,GAAI,OAAQ,QAAS,OAAQ,QAAS,KAAK,EAQrDC,EAAK,CAAI,EAAG,GAAI,EAAE,EAElBC,EAAO,IAAI,KAAK,eAAe,IAAA,GAAS,CAAI,IAAK,UAAW,MAAO,OAAO,CAAA,EAC1EC,EAAU,uBAEZ9+B,EAAO7rB,EAAO,IAAI,EAClB4Y,EAAU5Y,EAAO,IAAI,EACrBonD,EAAOpnD,EAAO,EAAE,EAChB4qD,EAAU5qD,EAAMC,EAAA,CAAA,CAAA,CAAA,EAChB4qD,EAAW7qD,EAAO,EAAK,EACvB8qD,EAAe9qD,EAAO,IAAI,EAE9B,GAAI,CACFuU,EAAAq2C,EAAU,KAAK,MAAM,aAAa,QAAQD,CAAO,GAAK,IAAI,EAAA,EAAA,CAC5D,MAAQ,CAAC,CAET,SAASI,EAAK,EAAK,CACjBx2C,EAAAq2C,EAAO,CAAA,GAAA1qD,EAAO0qD,CAAO,EAAEv3C,CAAG,EAAA,EAAA,EAE1B,GAAI,CACF,aAAa,QAAQs3C,EAAS,KAAK,UAASzqD,EAAC0qD,CAAO,CAAA,CAAA,CACtD,MAAQ,CAAC,CACX,CAEA,IAAMpI,EAAMriD,MAAAD,EACV2rB,CAAA,E,EAEQ,GAAI,UAAW,MAAOzL,EAAE,wBAAwB,EAAG,MAAKlgB,EAAE2rB,CAAI,CAAA,CAAC,MAAM,M,GACrE,GAAI,WAAY,MAAOzL,EAAE,yBAAyB,EAAG,MAAKlgB,EAAE2rB,CAAI,CAAA,CAAC,MAAM,O,GACvE,GAAI,iBAAkB,MAAOzL,EAAE,+BAA+B,EAAG,MAAKlgB,EAAE2rB,CAAI,CAAA,CAAC,MAAM,a,GACnF,GAAI,kBAAmB,MAAOzL,EAAE,yBAAyB,EAAG,MAAKlgB,EAAE2rB,CAAI,CAAA,CAAC,MAAM,O,OAKlFm/B,EAAK7qD,MAAAD,EACT2rB,CAAA,E,CAEM3rB,EAAA2rB,CAAI,CAAA,CAAC,SAAO,CACV,IAAK,UACL,KAAM,OACN,MAAOzL,EAAE,yBAAwB,CAAI,MAAKlgB,EAAE2rB,CAAI,CAAA,CAAC,OAAO,CAAA,EACxD,GAAI,sB,EAEN3rB,EAAA2rB,CAAI,CAAA,CAAC,MAAI,CACP,IAAK,OACL,KAAM,OACN,MAAOzL,EAAE,sBAAqB,CAAI,MAAKlgB,EAAE2rB,CAAI,CAAA,CAAC,IAAI,CAAA,EAClD,GAAI,mB,EAEN3rB,EAAA2rB,CAAI,CAAA,CAAC,UAAQ,CACX,IAAK,WACL,KAAM,MACN,MAAOzL,EAAE,0BAAyB,CAAI,MAAKlgB,EAAE2rB,CAAI,CAAA,CAAC,QAAQ,CAAA,EAC1D,OAAQzL,EAAE,wBAAuB,CAAI,MAAKlgB,EAAE2rB,CAAI,CAAA,CAAC,QAAQ,EAAC,CAAE,MAAO,KAAMjF,GAAK1mB,EAAC2rB,CAAI,CAAA,CAAC,QAAQ,EAAC,CAAE,SAAS,C,GACxG,GAAI,mB,CAEN,CAAA,CAAA,OAAO,OAAO,E,IAIhBo/B,EAAQ9qD,MAAAD,EACZ2rB,CAAA,E,CAEO,CAAA3rB,EAAA2rB,CAAI,CAAA,CAAC,OAAO,OAAK,CAChB,IAAK,OACL,MAAOzL,EAAE,8BAA8B,EACvC,OAAQA,EAAE,+BAA+B,EACzC,GAAI,YACJ,OAAQA,EAAE,+BAA+B,C,EAE3ClgB,EAAA2rB,CAAI,CAAA,CAAC,MAAM,UAAY,GAAC,CACtB,IAAK,SACL,MAAOzL,EAAE,gCAAgC,EACzC,OAAQA,EAAE,iCAAiC,EAC3C,GAAI,WACJ,OAAQA,EAAE,iCAAiC,C,EAE7ClgB,EAAA2rB,CAAI,CAAA,CAAC,MAAM,QAAU,GAAC,CACpB,IAAK,SACL,MAAOzL,EAAE,gCAAgC,EACzC,OAAQA,EAAE,iCAAiC,EAC3C,GAAI,UACJ,OAAQA,EAAE,iCAAiC,C,CAE7C,CAAA,CAAA,OAAQ,GAAS+nC,GAAI,CAAAjoD,EAAK0qD,CAAO,CAAA,CAAC,SAASzC,EAAK,GAAG,CAAA,E,IAIrD+C,EAAW,GACfpzB,EAAK,IAAK,IAAG,CACX,IAAKjQ,EAAI,KACT,MAAOA,EAAI,QACX,MAAO6iC,EAAK,OAAO,IAAI,KAAI,GAAI7iC,EAAI,KAAI,UAAA,CAAA,C,IAGrCsjC,EAAShrD,MAAAD,EAAY2rB,CAAI,CAAA,EAAE,OAAO,OAAS3rB,EAAA2rB,CAAI,CAAA,CAAC,OAAO,IAAK,GAAU24B,EAAM,SAAS,CAAA,CAAE,KAAI,CAAA,CAAG,GAAE,EAAG,EAAI,IAAI,EAEjH,SAAS4G,EAAS,EAAO,CACvB,IAAM7wB,EAAUiqB,EAAM,SAAO,CAAA,EACvBprC,EAAM,CACP,GAAAmhB,EACH,KAAM,MAAM,QAAQA,EAAQ,IAAI,EAAIA,EAAQ,KAAK,KAAK,IAAI,EAAIA,EAAQ,KACtE,QAAS,MAAM,QAAQA,EAAQ,OAAO,EAAIA,EAAQ,QAAQ,KAAK,IAAI,EAAIA,EAAQ,QAC/E,MAAOA,EAAQ,MAAQ5T,GAAO4T,EAAQ,KAAK,EAAIA,EAAQ,K,EAGzD,OAAOna,EAAC,iBAAkBokC,EAAM,KAAI,GAAIA,EAAM,UAAWprC,CAAM,CACjE,CAEA,eAAeiyC,GAAY,CACzB92C,EAAAs2C,EAAW,EAAI,EACft2C,EAAAu2C,EAAe,IAAI,EAEnB,GAAI,CACF,IAAMrpC,EAAS,MAAKiB,EAAA,IAAK,MAAM;;;;GAAU,EACzCnO,EAAAsX,EAAI,CAAA,GAAA3rB,EAAQ2rB,CAAI,EAAE,OAAQpK,EAAO,gBAAgB,MAAM,EAAA,EAAA,CACzD,OAASmE,EAAQ,CACfrR,EAAAu2C,EAAellC,EAAO,QAAO,EAAA,CAC/B,QAAU,CACRrR,EAAAs2C,EAAW,EAAK,CAClB,CACF,CAEA,eAAej/B,GAAO,CACpB,GAAI,CACFrX,EAAAsX,EAAO,MAAKnJ,EAAA,IAAK,MAAM;;;;;;;;;;;;;;;;;;;IAAK,CAAI,MAAO,IAAI,KAAK,KAAK,IAAG,EAAK,KAAG,CAAA,CAAE,YAAW,CAAA,CAAA,EAAA,EAAA,CAC/E,OAASkD,EAAQ,CACfrR,EAAAqE,EAAUgN,EAAO,QAAO,EAAA,CAC1B,CACF,CAEAgG,EAAI,E,wBAIHxI,GAAOT,EAAA,CAAA,CAAA,C,QAEP,IAAAJ,EAAGxjB,GAAA,EAAH6Y,EAAAtX,EAAAiiB,EAAG,EAAA,EAA4D/O,MAAAjT,EAAAqX,EAAA1X,EAAA0Y,CAAO,CAAA,CAAA,EAAtE3F,EAAA0P,EAAAJ,CAAG,C,SAEHsR,GAAIlR,EAAA,C,YAAQ,OAAAziB,EAAA2rB,CAAI,CAAA,CAAC,OAAO,I,WAAe,OAAAnJ,EAAA,KAAA,M,mDAEnC,IAAAuF,EAAG5oB,GAAA,EAAHipB,EAAA9nB,EAAAynB,CAAG,E,MAEC,IAAAG,EAAGlpB,GAAA,EACDypB,EAAGnoB,EADL4nB,CAAG,EAECgb,EAAM5iC,EADRmoB,CAAG,EACDvD,EAAA9kB,EAAA8iC,EAAM,EAAA,EAAN7a,EAAA9nB,EAAA2iC,EAAM,CAAA,E,MACyB,IAAAnf,EAAIhlB,GAAA,EAAJqmB,EAAAhlB,EAAA2jB,EAAI,EAAA,EAAezQ,EAAA,GAAAjT,EAAA+kB,EAAApC,CAAA,EAAA,KAAA9C,EAAE,yBAAyB,CAAA,CAAA,EAA9CnN,EAAA0P,EAAAsB,CAAI,C,UAA/B/jB,EAAA2rB,CAAI,CAAA,CAAC,QAAQ,cAAY1H,EAAAqE,CAAA,C,GAF/B/R,EAAAkS,CAAG,EAIH,IAAAE,EAAGpoB,EAJHkoB,EAAG,CAAA,EAKD1F,EAACziB,EADHqoB,CAAG,EACDmE,EAAA1sB,EAAA2iB,EAAC,EAAA,EADHxM,EAAAoS,CAAG,EALLpS,EAAA2R,CAAG,E,iBAMCjT,EAAA8N,EAAC,OAAA/iB,EAA0B2rB,CAAI,CAAA,CAAC,QAAQ,GAAG,E,aAJnCzL,EAAE,2BAA0B,CAAI,QAAOlgB,EAAE2rB,CAAI,CAAA,CAAC,QAAQ,OAAO,CAAA,MAImBzL,EAAE,sBAAsB,C,GANpHnN,EAAA0P,EAAAyF,CAAG,C,UADDloB,EAAA2rB,CAAI,CAAA,CAAC,SAAO1H,EAAAuE,CAAA,C,gBAYV/R,EAAA8R,EAAA,OAAAvoB,EAAA8qD,CAAK,EAAI,GAAMM,EAAK,KAAG,EAAd,IAAI,CACjB,IAAA77B,EAAGtwB,GAAA,EACD2wB,EAAGtvB,EADLivB,CAAG,EAEC4T,EAAM7iC,EADRsvB,CAAG,EACD5C,EAAA5sB,EAAA+iC,EAAM,EAAA,EAANza,EAAAnoB,EAAA4iC,EAAM,CAAA,E,MACW,IAAAvU,EAAI7vB,GAAA,EAAJmuB,EAAA9sB,EAAAwuB,EAAI,EAAA,EAAetb,MAAAjT,EAAA6sB,EAAAltB,EAAAorD,CAAI,CAAA,CAAC,MAAM,CAAA,EAA9Br4C,EAAA0P,EAAAmM,CAAI,C,UAAjB5uB,EAAAorD,CAAI,CAAA,CAAC,QAAMnnC,EAAA6D,CAAA,C,GAFjBvR,EAAAqZ,CAAG,EAIH,IAAAqI,EAAG13B,EAJHqvB,EAAG,CAAA,EAKDhN,GADFtiB,EAAA23B,CACM,EAAA,C,SAAK,OAAAj4B,EAAAorD,CAAI,CAAA,CAAC,E,oDAAwB93C,EAAA,GAAAjT,EAAA+sB,EAAApK,CAAA,EAAA,KAAA9C,EAAE,uBAAuB,CAAA,CAAA,E,+BADjE3J,EAAA0hB,CAAG,EALL1hB,EAAAgZ,CAAG,E,OAAH7Y,GAAA6Y,EAAG,EAAA,mBAAAvvB,EAAyBorD,CAAI,CAAA,CAAC,MAAI,IAAA,EAEzB51C,EAAAwX,EAAAhtB,EAAAorD,CAAI,CAAA,CAAC,KAAK,C,GAFtBr4C,EAAA0P,EAAA8M,CAAG,C,gBAWC9Y,EAAAyX,EAAA,OAAAluB,EAAA+qD,CAAQ,EAAI,GAAM9C,EAAK,KAAG,EAAd,IAAI,CACpB,IAAA7vB,EAAGl5B,GAAA,EACDkkC,EAAG9iC,EADL83B,CAAG,EAECmL,EAAMjjC,EADR8iC,CAAG,EACD9V,EAAAltB,EAAAmjC,EAAM,EAAA,EACNxU,EAAIxuB,EADJgjC,EAAM,CAAA,EACN/V,EAAAptB,EAAA2uB,EAAI,EAAA,EAFNxY,EAAA6sB,CAAG,EAIH,IAAAC,EAAG9iC,EAJH6iC,EAAG,CAAA,EAIH7U,EAAAjuB,EAAA+iC,CAAG,EACDzgB,GAAI2L,EAAA,C,SAAK,OAAAvuB,EAAAioD,CAAI,CAAA,CAAC,E,oDAAwB30C,MAAAjT,EAAAstB,EAAA3tB,EAAAioD,CAAI,CAAA,CAAC,MAAM,CAAA,E,+BACjD,IAAAhjC,EAAM1kB,EAAAguB,EAAA,CAAA,EAANV,EAAAztB,EAAA6kB,EAAM,EAAA,EAFR1O,EAAA8sB,CAAG,EALL9sB,EAAA6hB,CAAG,E,MAES5iB,EAAA8X,EAAAttB,EAAAioD,CAAI,CAAA,CAAC,KAAK,EACCzyC,EAAAgY,EAAAxtB,EAAAioD,CAAI,CAAA,CAAC,MAAM,E,QAK5B,KAAA/nC,EAAE,wBAAwB,CAAA,C,EAD5BxM,EAAA,QAAAuR,MAAiE4lC,EAAI7qD,EAACioD,CAAI,CAAA,CAAC,GAAG,CAAA,EAPlFl1C,EAAA0P,EAAA2V,CAAG,C,GA1BP7hB,EAAAwR,CAAG,EAAHhV,EAAA0P,EAAAsF,CAAG,C,WADD/nB,EAAA8qD,CAAK,CAAA,CAAC,QAAM9qD,EAAI+qD,CAAQ,CAAA,CAAC,QAAM/qD,EAAI2rB,CAAI,CAAA,CAAC,UAAO1H,EAAA8J,CAAA,C,gBA2CnD2xB,GAAKhxB,EAAA,C,aAAE,OAAA1uB,EAAAsiD,CAAM,C,IAEb,IAAAhf,EAAG/iC,EAAAmuB,EAAA,CAAA,EACD8U,EAAGljC,EADLgjC,CAAG,EACDrU,EAAA3uB,EAAAkjC,CAAG,E,CAEU,IAAA7W,EAAO,GAAA,CACd,IAAA8W,EAAGpkC,GAAA,EAAHoX,EAAAgtB,EAAG,OACK8mB,EAAS,GAAMnnC,GAAI,EAAV,IAAI,CACjB,IAAA+B,EAAM/lB,GAAA,EAAN0uB,EAAA1tB,EAAA+kB,EAAM,EAAA,E,MAANlQ,EAAAkQ,EAAM,eAAAnlB,EAA6BknD,CAAI,IAAK9jC,CAAI,E,QAC9C,KAAAlD,EAAE,yBAAwB,CAAI,KAAMkD,CAAI,CAAA,CAAA,C,EAD1C1P,EAAA,QAAAyR,MAAM1kB,EAA4DymD,EAAO9jC,EAAI,EAAA,CAAA,EAA7ErQ,EAAA0P,EAAA0C,CAAM,C,GAFV5O,EAAAktB,CAAG,EAAHnwB,EAAA,GAAA5S,EAAA+iC,EAAG,aAAAzgB,CAAA,EAAA,KAAwC9C,EAAE,yBAAyB,CAAA,CAAA,EAAtEnN,EAAA0P,EAAAghB,CAAG,C,EAFQzgB,EAAA/iB,MAAAigB,EAAE,yBAAyB,CAAA,EAA1CqH,EAAO0H,EAAA,C,yBACI,U,kCAUJ9b,EAAAkc,MAAArvB,EAAAknD,CAAI,EAAA,GAAA,CACPkC,GAAM3mC,EAAA,CAAiB,SAAAD,EAAA,IAAA,MAAM;;;;IAAQ,CAAI,KAAIxiB,EAAJknD,CAAI,CAAA,CAAA,EAClC,UAAQ,EAAC,EAAQvmD,IAAA,C,CACP,IAAAqiB,EAAA/iB,MAAA+qD,EAAQK,EAAQ,CAAA,CAAC,QAAQ,CAAA,EAAUhmC,EAAAplB,MAAAigB,EAAE,yBAAyB,CAAA,EAA/E4nC,GAAQrlC,EAAA,C,0HAflBlM,EAAAitB,CAAG,EAsBH,IAAAE,EAAGnjC,EAtBHijC,EAAG,CAAA,EAsBH9T,EAAApvB,EAAAojC,CAAG,E,CAEU,IAAA/W,EAAO,GAAA,CACd,IAAAM,EAAM3tB,GAAA,EAANkvB,EAAApuB,EAAA6sB,EAAM,EAAA,E,MAAN,EAAM,SAAAjtB,EAAsD2qD,CAAQ,E,aAClE3qD,EAAA2qD,CAAQ,EAAGzqC,EAAE,iBAAiB,EAAIA,EAAE,kBAAkB,C,GADxDxM,EAAA,QAAAuZ,EAA+Ek+B,CAAS,EAAxFp4C,EAAA0P,EAAAwK,CAAM,C,EAFKjK,EAAA/iB,MAAAigB,EAAE,cAAc,CAAA,EAASmF,EAAAplB,MAAAigB,EAAE,aAAa,CAAA,EAAvDqH,EAAOmI,EAAA,C,iDACI,U,yCAOP,IAAAkU,EAAG/kC,GAAA,EAAH4vB,EAAAruB,EAAAwjC,EAAG,EAAA,EAA4DtwB,EAAA,GAAAjT,EAAAouB,EAAAzL,CAAA,EAAA,KAAA9C,EAAE,gBAAe,CAAI,QAAOlgB,EAAE4qD,CAAY,CAAA,CAAA,CAAA,CAAA,EAAzG73C,EAAA0P,EAAAmhB,CAAG,C,UADD5jC,EAAA4qD,CAAY,GAAA3mC,EAAA0K,CAAA,C,iCAKdyD,EAAEjyB,EAAAykC,CAAA,EAAFnuB,EAAA2b,EAAE,OAAApyB,EACM2rB,CAAI,CAAA,CAAC,OAAU,GAAO24B,EAAM,MAAI,EAAjB,IAAK,CACxB,IAAAjyB,EAAE7yB,GAAA,EACA2vB,EAAI7uB,EADN+xB,CAAE,EAIAwR,EAAGtjC,EAHH4uB,EAAI,CAAA,EAIFc,EAAI3vB,EADNujC,CAAG,EACDhV,EAAAzuB,EAAA6vB,EAAI,EAAA,EACJmJ,EAAI74B,EADJ0vB,EAAI,CAAA,EACJjB,EAAA5uB,EAAAg5B,EAAI,EAAA,EAAJ7B,EAAAh3B,EAAA64B,EAAI,CAAA,E,MAEF,IAAAC,EAAI95B,GAAA,EAAJ6vB,EAAAhvB,EAAAi5B,EAAI,EAAA,E,iBAAuBnZ,EAAC,iBAAAlgB,EAAkBskD,CAAK,CAAA,CAAC,KAAI,SAAAtkD,EAAWskD,CAAK,CAAA,CAAC,SAAO,CAAA,CAAA,C,GAAhFvxC,EAAA0P,EAAA4W,CAAI,C,UADFr5B,EAAAskD,CAAK,CAAA,CAAC,SAAW,MAAIrgC,EAAA6K,CAAA,C,GAH3BvY,EAAAstB,CAAG,EAJLttB,EAAA8b,CAAE,E,cACA3b,GAAAyY,EAAI,EAAA,aAAmBm7B,EAAKtqD,EAACskD,CAAK,CAAA,CAAC,SAAM,GAAA,MAAA,EAAzCrvC,EAAAka,EAAI,aAAAnM,CAAA,EAAJ/N,EAAAka,EAAI,QAAA9J,CAAA,E,oBAAqEnF,EAAC,mBAAAlgB,EAAoBskD,CAAK,CAAA,CAAC,QAAM,MAAYpkC,EAAC,mBAAAlgB,EAAoBskD,CAAK,CAAA,CAAC,QAAM,MAInHpkC,EAAC,iBAAAlgB,EAAkBskD,CAAK,CAAA,CAAC,KAAI,OAAA,MACzC4G,EAAQlrD,EAACskD,CAAK,CAAA,C,GANxCvxC,EAAA0P,EAAA4P,CAAE,C,GAFN9b,EAAA6b,CAAE,EAgBF,IAAA9P,EAAC/hB,EAhBD6xB,EAAE,CAAA,EAgBF5C,EAAApvB,EAAAkiB,EAAC,EAAA,E,UAhBDrN,EAAAmd,EAAE,aAAApP,CAAA,E,aAAkC9C,EAAE,cAAc,MAgB5BA,EAAE,iBAAgB,CAAI,KAAMwG,GAAK1mB,EAACirD,CAAS,CAAA,CAAA,CAAA,C,iBAEnE,IAAA99B,EAACztB,GAAA,EAADowB,EAAA1vB,EAAA+sB,EAAC,EAAA,EAAe7Z,EAAA,GAAAjT,EAAAyvB,EAAA9M,CAAA,EAAA,KAAA9C,EAAE,cAAc,CAAA,CAAA,EAAhCnN,EAAA0P,EAAA0K,CAAC,C,UAnBCntB,EAAA2rB,CAAI,CAAA,CAAC,OAAO,OAAM1H,EAAAiL,CAAA,EAAAjL,EAAAwF,EAAA,EAAA,C,4DAwBb,IAAAkD,EAAO,GAAA,CACd/J,GAAIH,EAAA,C,iGACFziB,EAAA2rB,CAAI,CAAA,CAAC,MAAM,cAAgB,EACxBzL,EAAE,mCAAkC,CAAI,MAAKlgB,EAAE2rB,CAAI,CAAA,CAAC,MAAM,aAAa,CAAA,EACvEzL,EAAE,4BAA4B,C,mCALxB8C,EAAA/iB,MAAAigB,EAAE,8BAA8B,CAAA,EAA/CqH,EAAOkQ,GAAA,C,yBACI,U,yCAUI,IAAAG,EAAI,GAAA,C,iBACLnhB,EAAAqhB,EAAA,OAAA93B,EAAA2rB,CAAI,CAAA,CAAC,cAAiB,GAAc7N,EAAa,KAAG,EAA9B,IAAY,C,CACZ,IAAAkF,EAAA/iB,MAAA,kBAAAD,EAAA8d,CAAY,CAAA,CAAC,KAAG,EAA1CgL,GAAGrG,EAAA,C,kDACD2L,EAAEjuB,EAAA43B,CAAA,EAAEqmB,GAAJ99C,EAAA8tB,CAAoB,EAAA,C,mBAAE,OAAApuB,EAAA8d,CAAY,C,IAAlCvH,EAAA6X,CAAE,EACF,IAAAE,EAAE/tB,EADF6tB,EAAE,CAAA,EAEAmwB,GADFj+C,EAAAguB,CACuB,EAAA,C,mBAAE,OAAAtuB,EAAA8d,CAAY,C,oCADrCvH,EAAA+X,CAAE,E,mDALMpO,EAAE,qCAAqC,EAAK,CAAA,MAAOA,EAAE,gCAAgC,EAAG,MAAO,EAAI,C,GAAnHoJ,GAAK7G,EAAA,C,uCAA0H,OAAAziB,EAAA2rB,CAAI,CAAA,CAAC,cAAc,M,EACvI,O,4BAYX,IAAA6L,EAAC93B,GAAA,EAADwwB,EAAA9vB,EAAAo3B,EAAC,EAAA,EAAelkB,EAAA,GAAAjT,EAAA6vB,EAAAlN,CAAA,EAAA,KAAA9C,EAAE,8BAA8B,CAAA,CAAA,EAAhDnN,EAAA0P,EAAA+U,CAAC,C,UAdCx3B,EAAA2rB,CAAI,CAAA,CAAC,cAAc,OAAM1H,EAAAqL,CAAA,EAAArL,EAAA+J,EAAA,EAAA,C,6CA5CjCzX,EAAAmtB,CAAG,EAvBLntB,EAAA+sB,CAAG,EAAH,IAAAgC,EAAA/kC,EAAA+iC,EAAG,CAAA,E,CAwFQ,IAAA3W,EAAO,GAAA,CACd/J,GAAIH,EAAA,C,2EAA8CnP,EAAA,GAAAjT,EAAA+vB,EAAApN,CAAA,EAAA,KAAA9C,EAAE,qBAAqB,CAAA,CAAA,E,gCAF9D8C,EAAA/iB,MAAAigB,EAAE,uBAAuB,CAAA,EAAxCqH,EAAO+d,EAAA,C,yBACI,U,kBAI0B,IAAAtiB,EAAA/iB,MAAAigB,EAAE,uBAAuB,CAAA,EAA5D4a,GAAMrY,EAAA,C,aAAS,OAAAziB,EAAA2rB,CAAI,CAAA,CAAC,M,2BAAkD,MAAA,E,0FA/IvE,CAAA3rB,EAAA2rB,CAAI,GAAA,CAAA3rB,EAAK0Y,CAAO,EAAAuL,EAAAP,EAAA,EAAA1jB,EAEX2rB,CAAI,EAAA1H,EAAAmZ,GAAA,EAAA,EAAAnZ,EAAAgE,EAAA,CAAA,C,aAJP,C,kEC5LR,SAAAsjC,GAAA,EAAA,EAAA,C,QAOC,IAAAvmC,EAAGnkB,GAAA,EAAH0hB,EAAAxhB,EAAAikB,CAAG,E,CACiD,IAAAhC,EAAAhiB,MAAAwhB,EAAA,OAAA,MAAQ,kBAAoB,EAAE,EAAhFI,GAAIL,EAAA,C,4FAAgFjP,EAAA,GAAAnS,EAAAuW,EAAAsL,CAAA,EAAA,KAAA9C,EAAE,oBAAoB,CAAA,CAAA,E,6CAChD,IAAA8C,EAAAhiB,MAAAwhB,EAAA,OAAA,UAAY,kBAAoB,EAAE,EAA5FI,GAAIoF,EAAA,C,oGAA4F1U,EAAA,GAAAnS,EAAA+jB,EAAAlC,CAAA,EAAA,KAAA9C,EAAE,wBAAwB,CAAA,CAAA,E,+BAF5H3J,EAAAyO,CAAG,EAAH1R,EAAA,GAAAjS,EAAA2jB,EAAG,aAAAhC,CAAA,EAAA,KAAmC9C,EAAE,gBAAgB,CAAA,CAAA,EAAxDnN,EAAA0P,EAAAuC,CAAG,E,GAFI,C,+4BCLR,SAAA+mC,GAAA,EAAA,EAAA,C,QAkBE,IAAM72B,EAAQ5Q,GAAW,EA2BnB8Q,EAAW5P,GAAc,EACzBvD,EAASC,GAAS,EAEpBkrB,EAAStrC,EAAMC,EAAA,CAAA,CAAA,CAAA,EACf4qB,EAAU7qB,EAAMC,EAAA,CAAA,CAAA,CAAA,EAChBiqD,EAAYlqD,EAAO,EAAK,EAEtBmqD,MAAc,IAAI,KAAI,CAAA,CAAG,YAAW,CAAA,CAAG,MAAM,EAAG,EAAE,EAGpDC,EAAKnqD,EAAA,CAAY,MAFJ,GAAS,IAAI,KAAK,KAAK,IAAG,EAAKmlD,EAAO,KAAQ,CAAA,CAAE,YAAW,CAAA,CAAG,MAAM,EAAG,EAAE,EAE/D,CAAQ,EAAE,EAAG,GAAI+E,EAAK,CAAA,CAAA,EAC7C9xB,EAASr4B,EAAO,EAAE,EAClBqqD,EAAQrqD,EAAOmgB,EAAO,MAAM,IAAI,OAAO,IAAM,GAAG,EAChDkJ,EAAUrpB,EAAO,EAAI,EACrBsqD,EAAQtqD,EAAO,IAAI,EAEjBuqD,EAAOrqD,MAAYigB,EAAO,MAAM,IAAI,OAAO,CAAA,EAC3C9F,EAAQna,MAAYigB,EAAO,MAAM,IAAI,QAAQ,CAAA,EAC7CqqC,EAAQtqD,MAAY,GAAOC,EAACoqD,CAAO,GAAApqD,EAAIka,CAAQ,EAAA,EAErD,eAAeuP,GAAO,CACpBrX,EAAA8W,EAAU,EAAI,EAEd,IAAMQ,EAAO,MAAMyJ,EAAS,YAAO5S,EAAA,IAC7B,MAAM;;;;;;;;;;;;;;;;;;IAAK,CACb,OAAMvgB,EAAEk4B,CAAM,GAAI,KAClB,MAAKl4B,EAALkqD,CAAK,EACL,QAASj3B,EAAM,OACf,MAAOA,EAAM,KACb,MAAKjzB,EAAEoqD,CAAO,EACd,OAAMpqD,EAAEka,CAAQ,C,IAIpB9H,EAAA8W,EAAU,EAAK,EAEVQ,IAELtX,EAAAsY,EAAUhB,EAAK,aAAY,EAAA,EAC3BtX,EAAA+4B,EAASzhB,EAAK,OAAM,EAAA,EACpBuJ,EAAM,QAAQvJ,EAAK,UAAU,EAC/B,CAEA,SAAS6K,EAAK,EAAW,CACnBC,IAAc,UAAWvB,EAAM,QAAOjzB,EAACmrC,CAAM,CAAA,CAAC,GAAE,EAAG,CAAA,EAAG,EAAE,EACvDlY,EAAM,KAAI,EAEfxJ,EAAI,CACN,CAEA,eAAe6gC,GAAW,CAGxB,GAFAl4C,EAAA+3C,EAAQ,IAAI,EAEVnqD,EAAEoqD,CAAO,EAAE,CACX,IAAM1gC,EAAO,MAAKnJ,EAAA,IAAK,MAAM,qEAAW,CAAI,KAAIvgB,EAAEoqD,CAAO,CAAA,CAAA,CAAA,CAAI,UAAY,IAAI,EAEzE1gC,GAAM,O,EACRygC,E,CAAU,MAAOzgC,EAAK,MAAM,WAAY,GAAE,WAAaA,EAAK,MAAM,OAAQ,KAAMzL,EAAE,sBAAsB,C,MAG1G,MACF,CAEA,GAAE,CAAAje,EAAGka,CAAQ,EAAE,OAEf,IAAMwP,EAAO,MAAKnJ,EAAA,IAAK,MAAM,gFAAY,CAAI,SAAQvgB,EAARka,CAAQ,CAAA,CAAA,CAAA,CAAI,UAAY,IAAI,EAErEwP,GAAM,Q,EACRygC,E,CAAU,MAAOzgC,EAAK,OAAO,KAAM,GAAE,YAAcA,EAAK,OAAO,WAAY,KAAMzL,EAAE,uBAAuB,C,KAE9G,CAEA/L,MAAc,CACZnB,EAAAq5C,CAAO,EACPr5C,EAAAmJ,CAAQ,EAER/H,MAAc,CACZ8gB,EAAM,MAAK,EACXxJ,EAAI,EACJ6gC,EAAQ,CACV,CAAC,CACH,CAAC,EAED,SAAS1gC,GAAO,EAAQ,CACtBxX,EAAA8lB,EAAS5O,EAAM,EAAA,EACf2J,EAAM,MAAK,EACXxJ,EAAI,CACN,CAEA,SAAS8gC,EAAK,EAAU,CACtBn4C,EAAA83C,EAAQM,EAAQ,EAAA,EACZA,GAAQp4C,EAAE8lB,EAAS,EAAE,EACzBjF,EAAM,MAAK,EACXxJ,EAAI,CACN,CAEA,eAAeghC,IAAW,CACxBr4C,EAAA23C,EAAY,EAAI,EAEhB,IAAMzqC,EAAS,MAAM6T,EAAS,YAAO5S,EAAA,IAC/B,M;;W,CAKA,KAAM,IAAI,KAAI,GAAI0pC,EAAM,KAAI,UAAA,CAAA,CAAa,YAAW,EACpD,GAAI,IAAI,KAAK,IAAI,KAAI,GAAIA,EAAM,GAAE,UAAA,CAAA,CAAa,QAAO,EAAK,KAAQ,CAAA,CAAE,YAAW,EAC/E,OAAMjqD,EAAEk4B,CAAM,GAAI,KAClB,MAAKl4B,EAAEoqD,CAAO,GAAI,I,IAKxBh4C,EAAA23C,EAAY,EAAK,EAEZzqC,IAEL6T,EAAS,IAAIlV,EAAE,uBAAsB,CAAI,MAAOqB,EAAO,aAAa,KAAK,CAAA,CAAA,EACzE,SAAS,OAAOA,EAAO,aAAa,GAAG,EACzC,C,CAGW,IAAAyB,EAAAhhB,MAAAke,EAAE,gBAAgB,CAAA,EAA9ByT,GAAIlR,EAAA,C,4DACF8oC,GAAahpC,EAAA,CAAA,KAAA,KAAA,CAAA,E,aAEb8Q,GAAOrL,EAAA,C,eAAW,OAAAoN,EAAS,K,uBAGzB,IAAA/S,EAAG5gB,GAAA,EAAH4mB,EAAAjmB,EAAAigB,CAAG,E,MAEC,IAAAe,EAAI9hB,GAAA,EAAJoW,EAAAtV,EAAAghB,CAAI,E,OAEFR,GAAI2F,EAAA,C,SAAK,OAAAtmB,EAAAmqD,CAAK,CAAA,CAAC,E,0DAA8B94C,MAAAhR,EAAA4iB,EAAAjjB,EAAAmqD,CAAK,CAAA,CAAC,KAAK,CAAA,E,+CAF1D71C,EAAA6M,CAAI,E,wCACFlD,EAAE,oBAAmB,CAAI,KAAIje,EAAEmqD,CAAK,CAAA,CAAC,IAAI,CAAA,MACwBlsC,EAAE,uBAAuB,C,GAF5FnN,EAAA0P,EAAAW,CAAI,C,QAKJ,IAAAW,EAAIviB,GAAA,EAAJsrB,EAAAvqB,EAAAwhB,EAAI,EAAA,E,iBAAE7D,EAACje,EAACoqD,CAAO,EAAG,sBAAwB,sBAAsB,C,GAAhEt5C,EAAA0P,EAAAsB,CAAI,C,UANF9hB,EAAAmqD,CAAK,EAAAnoC,EAAAP,CAAA,EAAAO,EAAAwF,EAAA,EAAA,C,GAST7G,G,KAAI,EAAA,C,iEAAoCtP,EAAA,GAAAhR,EAAA0qB,EAAAhK,CAAA,EAAA,KAAA9C,EAAE,qBAAqB,CAAA,CAAA,E,+BAVjE3J,EAAA8L,CAAG,EAAHtP,EAAA0P,EAAAJ,CAAG,C,UADDpgB,EAAAqqD,CAAQ,GAAAroC,EAAAgE,CAAA,C,gBAeZV,EAAOqB,EAAA,C,iBACL,IAAAb,EAAGpmB,GAAA,EACDwhB,EAAK/gB,EADP2lB,CAAG,EAEC6G,EAAIxsB,EADN+gB,CAAK,EACH+J,EAAA3qB,EAAAqsB,EAAI,EAAA,EACJof,EAAA7rC,EADAysB,EAAI,CAAA,EAOFsf,EAAM9rC,EANR4rC,CAAA,EAME5gB,EAAA7qB,EAAA2rC,EAAM,EAAA,EAAN,EAAM,MAAN,EAAM,QAAA,GAAN,IAAAhgB,EAAA/rB,EAAA+rC,CAAM,EACAz3B,EAAAyX,EAAA,OAAAjsB,EAAA0qB,CAAO,EAAI,GAAK1L,EAAI,QAAM,EAAf,IAAG,CAClB,IAAAi5B,EAAMx4C,GAAA,EAAN4rB,EAAA/qB,EAAA23C,EAAM,EAAA,E,YAAqB1kC,EAAA8X,EAAArrB,EAAAgf,CAAG,CAAA,CAAC,KAAK,EAAtBk5B,KAAA,EAAAl4C,EAAAgf,CAAG,CAAA,CAAC,UAAlB,EAAM,OAAN,EAAM,QAAAk5B,IAAA,G,GAANpnC,EAAA0P,EAAAy3B,CAAM,C,GARV3jC,EAAAy3B,CAAA,E,MAAA74B,EAAA64B,CAAA,EAFFz3B,EAAA4M,CAAK,EAeL,IAAA4J,EAAK5qB,EAfLghB,EAAK,CAAA,EAgBH+F,EAAA9mB,EADF2qB,CAAK,EACHjY,EAAAoU,CAAA,EAAA,IAAAsE,EAAArrB,EAAA+mB,CAAA,EADF3S,EAAAwW,CAAK,EAUL,IAAA7E,EAAG/lB,EAVH4qB,EAAK,CAAA,EAWHgC,EAAI3sB,EADN8lB,CAAG,EACDyF,EAAAvrB,EAAA2sB,CAAI,E,QAEQ,IAAA/L,EAAAhhB,MAAAke,EAAE,sBAAsB,CAAA,EAAUmF,EAAArjB,MAAAke,EAAE,uBAAuB,CAAA,EAArE8G,GAAGuH,EAAA,C,mDAFLhY,EAAAwY,CAAI,EAIJ,IAAAtG,EAAGtmB,EAJH4sB,EAAI,CAAA,EAKFrB,EAAKtrB,EADPqmB,CAAG,EACD3T,EAAA4Y,CAAK,EAEL,IAAAW,EAAKlsB,EAFLurB,EAAK,CAAA,EAEL5Y,EAAAuZ,CAAK,EACL,IAAApJ,EAAM9iB,EADNksB,EAAK,CAAA,EACLR,EAAAtrB,EAAA0iB,EAAM,EAAA,EAJR1O,EAAAkS,CAAG,EALLlS,EAAA2R,CAAG,EA1BL3R,EAAAwR,CAAG,E,6BAGC,EAAA,SAAA9lB,EAGWkqD,CAAK,E,OADR/d,KAAA,EAAAnsC,EAAAk4B,CAAM,K,EAFd,OAAA,EAAA,QAAAiU,IAAA,GAAA5rC,EAAAwrC,EAAAI,CAAA,GAcAt4B,EAAAoT,EAAAjnB,EAGUkqD,CAAK,CAAA,E,kCAYbl3C,EAAAyY,EAAK,aAAAyQ,CAAA,EAALlpB,EAAAyY,EAAK,MAA+Gw+B,EAAM,EAAE,EAE5Hj3C,EAAAoZ,EAAK,aAAA+P,CAAA,EAALnpB,EAAAoZ,EAAK,MAAgH69B,EAAM,IAAI,EAA/Hj3C,EAAAoZ,EAAK,MAAAktB,CAAA,EACL,EAAM,SAAAt5C,EAA4C+pD,CAAS,GAAA,CAAKE,EAAM,MAAI,CAAKA,EAAM,G,aAjClEhsC,EAAE,eAAe,MAOnBA,EAAE,cAAc,MAcnCA,EAAE,gBAAgB,MAKhBA,EAAE,uBAAuB,MAImCA,EAAE,sBAAsB,MAExBA,EAAE,yBAAyB,MAA+C+rC,EAAK,MAEzI/rC,EAAE,0BAA0B,C,GAjChCxM,EAAA,SAAAs6B,EAIY,GAAUniB,GAAO7X,EAAM,cAAc,KAAK,CAAA,EAUtDN,EAAA,SAAAwV,EAIY,GAAUsjC,EAAKx4C,EAAM,cAAc,OAAO,CAAA,EAWpDyB,EAAAiY,MAAmGw+B,EAAM,KAAI,GAAV,EAAM,KAAIt/B,CAAA,EAE7GnX,EAAA4Y,MAAsG69B,EAAM,GAAE,GAAR,EAAM,GAAEt/B,CAAA,EAC9GlZ,EAAA,QAAAuR,EAAkGynC,EAAQ,EAnChH35C,EAAA0P,EAAAsF,CAAG,C,4CA4CH7E,GAAOT,EAAA,CAAA,CAAA,C,QAEP8E,EAAO9E,EAAA,C,oCAIG,IAAAO,EAAAhhB,MAAAC,EAAAkqD,CAAK,EAAGjsC,EAAE,sBAAsB,EAAIA,EAAE,sBAAsB,CAAA,EAHpE4a,GAAA7L,EAAA,C,aACE,OAAAhtB,EAAAmrC,CAAM,C,EACA,MAAA,I,2BAIR1oB,G,KAAK,EAAA,C,YAAE,OAAAwQ,C,cAAc,OAAAjzB,EAAAmrC,CAAM,CAAA,CAAC,M,aAAc,OAAAnrC,EAAAkpB,CAAO,C,EAAU,OAAAqL,C,2CAV3Dv0B,EAAAkpB,CAAO,GAAAlpB,EAAImrC,CAAM,CAAA,CAAC,SAAW,EAACnpB,EAAAqE,CAAA,EAAArE,EAAA+J,EAAA,EAAA,C,qCAlE7B,C,sBCnKR,IAAa4+B,GAAgB,GAAa1sC,EAAE,uBAAuB2sC,GAAU,EAEhEC,GAAiB,GAC5B,CAAC,CAAC,OAAQ,KAAK,CAAC,CAAC,SAASzN,EAAS,QAAQ,GAC3C,EAAEA,EAAS,kBAAoB,gBAC3BA,EAAS,eACTA,EAAS,YAEF0N,GAAiB,GAC5B,CACE1N,EAAS,OAAS,YAChBA,EAAS,WAAa,OAAS,CAC7B,OACAn/B,EAAE,sBAAsB,EACxB,SACF,EACFm/B,EAAS,aAAe,CAAC,OAAQn/B,EAAE,8BAA8B,EAAG,MAAM,EAC1Em/B,EAAS,iBAAmB,CAC1B,UACAn/B,EAAE,yBAAyB,EAC3B,MACF,EACAm/B,EAAS,WAAa,CAAC,YAAan/B,EAAE,2BAA2B,EAAG,MAAM,EAC1E4sC,GAAczN,CAAQ,GAAK,CACzB,cACAn/B,EAAE,2BAA2B,EAC7B,MACF,CACF,CAAC,CAAC,OAAO,OAAO,E,85BC9BlB,SAAAotC,GAAA,EAAA,EAAA,C,QAiBE,IAAMrrC,EAASC,GAAS,EAElBye,EAAM;;;;IAMNyV,EAAK;;4BAEezV,EAAM;8CACYA,EAAM;;IAI5C1V,EAAO,CACX/K,EAAE,4BAA4B,EAC5B,CAAA,MAAOA,EAAE,wBAAwB,EAAG,KAAM,EAAI,E,CAC9C,MAAOA,EAAE,+BAA+B,EAAG,KAAM,GAAM,MAAO,E,GAG5DkV,EAAW5P,GAAc,EAE3B8L,EAASruB,EAAMC,EAAA,CAAA,CAAA,CAAA,EACf8sC,EAAW/sC,EAAMC,EAAA,CAAA,CAAA,CAAA,EACjBioB,EAAUloB,EAAO,EAAI,EAEzB,eAAeyoB,GAAO,CACpB,IAAMC,EAAO,MAAMyJ,EAAS,YAAO5S,EAAA,IAAW,MAAM4zB,CAAK,CAAA,EAEzD/hC,EAAA8W,EAAU,EAAK,EAEVQ,IAELtX,EAAAid,EAAS3F,EAAK,OAAM,EAAA,EACpBtX,EAAA27B,EAAWrkB,EAAK,SAAQ,EAAA,EAC1B,CAEAD,EAAI,EAEJ,eAAepP,EAAQ,EAAU,CAS3B,MARe8Y,EAAS,YAAO5S,EAAA,IAE3B,MAAK,kFAAA,CACP,IAAK68B,EAAS,GAAG,CAAA,EAErBn/B,EAAE,6BAA4B,CAAI,KAAMm/B,EAAS,IAAI,CAAA,CAAA,GAG7C,MAAM3zB,EAAI,CACtB,C,CAIU,IAAAiB,EAAO,GAAA,CACd,IAAA1H,EAAMviB,GAAA,EAANgV,EAAAvU,EAAA8hB,EAAM,EAAA,EACJ3R,EAAA,GAAAlQ,EAAAsU,EAAAsL,CAAA,EAAA,KAAA9C,EAAE,eAAe,CAAA,CAAA,EADnBxM,EAAA,QAAAuR,MAAmEhD,EAAO,GAAG,gBAAgB,CAAA,EAA7FlP,EAAA0P,EAAAwC,CAAM,C,EAFEjC,EAAA3f,MAAA6c,EAAE,iBAAiB,CAAA,EAASmF,EAAAhiB,MAAA6c,EAAE,gBAAgB,CAAA,EAA1DyT,GAAIlR,EAAA,C,iDACO,U,mCAMT4Q,GAAO9Q,EAAA,C,eAAW,OAAA6S,EAAS,K,uBAGzBlS,GAAOT,EAAA,CAAA,CAAA,C,2BAGI,IAAAmV,EAAI,GAAA,C,iBACLnhB,EAAA4R,EAAA,OAAA/kB,EAAAguB,CAAM,EAAI,GAAU+tB,EAAS,KAAG,EAAtB,IAAQ,C,CACA,IAAAr8B,EAAA3f,MAAA,cAAAC,EAAA+7C,CAAQ,CAAA,CAAC,KAAG,EAAlCv2B,GAAGrG,EAAA,C,kDACD2L,EAAE7qB,EAAA4qB,CAAA,EACA9L,EAAG3e,EADL0qB,CAAE,EACA7F,EAAA7kB,EAAA2e,CAAG,E,CACsB,IAAAW,EAAA3f,MAAA,cAAAC,EAAA+7C,CAAQ,CAAA,CAAC,KAAG,EAAnCz8B,GAAI2F,EAAA,C,kGAAiFjV,MAAAlQ,EAAA8hB,EAAA5hB,EAAA+7C,CAAQ,CAAA,CAAC,IAAI,CAAA,E,6CACrF,IAAAr8B,EAAA3f,MAAA0pD,GAAazpD,EAAC+7C,CAAQ,CAAA,CAAA,EAAnC97B,GAAKmF,EAAA,C,2BAFPnS,EAAA8L,CAAG,EAIH,IAAA0F,EAAGvkB,EAJH6e,EAAG,CAAA,EAKDe,EAAI1f,EADNqkB,CAAG,EACD3C,EAAAjiB,EAAAigB,EAAI,EAAA,EAAJwF,EAAAplB,EAAA4f,EAAI,CAAA,E,gBACyB9P,MAAAlQ,EAAA0pB,EAAA,KAAAxpB,EAAA+7C,CAAQ,CAAA,CAAC,aAAa,MAAI,IAAA,CAAA,E,gBAAnD/7C,EAAA+7C,CAAQ,CAAA,CAAC,cAAYp7B,EAAAgE,CAAA,C,GACzB,IAAAlE,EAAIvgB,EAAAolB,EAAA,CAAA,EAAJoE,EAAA7pB,EAAA4gB,CAAI,EAHNxN,EAAAwR,CAAG,EALLxR,EAAA6X,CAAE,EAWF,IAAAE,EAAE9qB,EAXF4qB,EAAE,CAAA,EAWFlB,EAAAxpB,EAAA4qB,CAAE,EAEApG,EAAG1kB,EAAA0pB,CAAA,EAAHE,EAAAjqB,EAAA+kB,EAAG,EAAA,EAFL3R,EAAA+X,CAAE,EAUF,IAAAmB,EAAEjsB,EAVF8qB,EAAE,CAAA,EAUFhB,EAAA5pB,EAAA+rB,CAAE,E,aAGE,IAAAhH,EAAG7lB,GAAA,EAAH4qB,EAAArqB,EAAAslB,EAAG,EAAA,E,iBAAuBvI,EAAE,4BAA2B,CAAI,MAAK5c,EAAE+7C,CAAQ,CAAA,CAAC,QAAQ,CAAA,C,GAAnFtsC,EAAA0P,EAAAgG,CAAG,C,UADDnlB,EAAA+7C,CAAQ,CAAA,CAAC,UAAQp7B,EAAAqE,CAAA,C,GAFvB/R,EAAAkZ,CAAE,E,YAf0Bja,EAAA4P,EAAA9hB,EAAA+7C,CAAQ,CAAA,CAAC,GAAG,E,0CAgBtC7pC,EAAA8X,EAAA,GAAAhqB,EAAA+7C,CAAQ,CAAA,CAAC,aAAW,GAAA,EAAA,C,OAdQuN,GAAYtpD,EAAC+7C,CAAQ,CAAA,CAAC,QAAQ,MAI1DuN,GAAYtpD,EAAC+7C,CAAQ,CAAA,CAAC,QAAQ,MAE5B/7C,EAAA+7C,CAAQ,CAAA,CAAC,WAAa,MACnBn/B,EAAE,uBAAuB,EACzB5c,EAAA+7C,CAAQ,CAAA,CAAC,OAAS,WAChBn/B,EAAE,sBAAsB,EACxBA,EAAE,0BAA0B,C,6CAtBQ8C,EAAA3f,MAAA6c,EAAE,iBAAiB,CAAA,EAAxEoJ,GAAKlB,EAAA,C,cAAU,OAAA6C,C,cAAgB,OAAA3nB,EAAAguB,CAAM,CAAA,CAAC,M,2BAC3B,O,wCAoCM,IAAAtO,EAAA3f,MAAA6c,EAAE,oBAAoB,CAAA,EAArCqH,EAAO9E,EAAA,C,0CACL,IAAA2P,EAAErvB,GAAA,EAAF0T,EAAA2b,EAAE,OAAA9uB,EACM0sC,CAAQ,EAAI,GAAUqP,EAAS,KAAG,EAAtB,IAAQ,CACxB,IAAAhtB,EAAEvvB,GAAA,EACA6lB,EAAGjlB,EADL2uB,CAAE,EAEEzD,EAAIlrB,EADNilB,CAAG,EACD+F,EAAAhrB,EAAAkrB,CAAI,E,CACqB,IAAA5L,EAAA3f,MAAA,cAAAC,EAAA+7C,CAAQ,CAAA,CAAC,KAAG,EAAnCz8B,GAAI8L,EAAA,C,iGAAgFpb,MAAAlQ,EAAAuqB,EAAArqB,EAAA+7C,CAAQ,CAAA,CAAC,IAAI,CAAA,E,+BACjG,IAAAtwB,EAAIvrB,EAAAkrB,EAAA,CAAA,EAAJb,EAAA1qB,EAAA4rB,EAAI,EAAA,EAFNxY,EAAAqY,CAAI,EAIJ,IAAAO,EAAI3rB,EAJJorB,EAAI,CAAA,EAKFqB,EAAIvsB,EADNyrB,CAAI,EACFrB,EAAA3qB,EAAA8sB,EAAI,EAAA,EACJ9K,EAAM3hB,EADNysB,EAAI,CAAA,EACJzB,EAAArrB,EAAAgiB,EAAM,EAAA,EAFR5O,EAAA4Y,CAAI,EALN5Y,EAAAoS,CAAG,EADLpS,EAAA8b,CAAE,E,UAIyC7c,EAAAqY,EAAAvqB,EAAA+7C,CAAQ,CAAA,CAAC,GAAG,E,oBAG9Bn/B,EAAE,wBAAuB,CAAI,IAAKsG,GAAGljB,EAAC+7C,CAAQ,CAAA,CAAC,UAAU,CAAA,CAAA,MACPn/B,EAAE,mBAAmB,C,GAA1FxM,EAAA,QAAAyR,MAAiD7I,EAAOhZ,EAAC+7C,CAAQ,CAAA,CAAA,EARvEtsC,EAAA0P,EAAA4P,CAAE,C,GAFN9b,EAAA6b,CAAE,EAAFrf,EAAA0P,EAAA2P,CAAE,C,mCAFF9uB,EAAA0sC,CAAQ,CAAA,CAAC,QAAM/rB,EAAAuE,CAAA,C,mBAvCjBllB,EAAA6nB,CAAO,EAAAlH,EAAAP,CAAA,EAAAO,EAAAwF,EAAA,EAAA,C,gDAXN,C,aCiaE,IAAAsC,I,EAAO,EAAOloB,EAAE,EAAQA,EAAE,EAAKA,EAAE,EAAIA,I,CAC5C,IAAAkpB,EAAKjpB,GAAA,EACHolB,EAAKnlB,EADPgpB,CAAK,EACHjY,EAAAoU,CAAK,EACL,IAAA9F,EAAIpf,EADJklB,EAAK,CAAA,EAEHnF,EAAIhgB,EADNqf,CAAI,EACF1L,EAAAzT,EAAA8f,EAAI,EAAA,EAAJxB,EAAAve,EAAA+f,EAAI,CAAA,E,MACM,IAAA6K,EAAI1qB,GAAA,EAAJghB,EAAAjhB,EAAA2qB,EAAI,EAAA,EAAetb,MAAAnP,EAAA+gB,EAAA+uB,EAAI,CAAA,CAAA,EAAvBlhC,EAAA0P,EAAAmM,CAAI,C,UAAVqlB,EAAI,GAAAhwB,EAAAP,CAAA,C,GAFVnN,EAAA6M,CAAI,EAFN7M,EAAAwW,CAAK,E,OACHjX,EAAAoT,EAAuDqlB,EAAO,CAAA,EAEtD/4B,EAAAkC,EAAAyL,EAAK,CAAA,C,GAFbzP,EAAA,SAAAwV,EAA2E,GAAUslB,EAAQ,CAAA,CAACx6B,EAAM,cAAc,OAAO,CAAA,EAD3HjB,EAAA0P,EAAAsK,CAAK,C,gpGAteR,SAAAqiC,GAAA,EAAA,EAAA,C,QA+eU,IAAAC,EAAI,GAAA,C,CACQ,IAAArsC,EAAA1d,MAAA4a,EAAE,sBAAqB,CAAI,KAAI3a,EAAE6V,EAAK,CAAA,CAAA,CAAA,EAAWiK,EAAA/f,MAAAC,EAAAgmB,EAAM,CAAA,EAAE,OAAKhmB,EAAI2uC,EAAK,EAAG,KAAOh0B,EAAE,8BAA8B,CAAA,EAApIqH,EAAO9E,EAAA,C,iGAEH,IAAAH,EAACje,GAAA,EAAD+gB,EAAArhB,EAAAue,CAAC,EAEC,EAACte,EAAAohB,CAAA,EAAD0H,EAAA7oB,EAAA,EAAC,EAAA,E,IAFHsS,EAAA+L,CAAC,E,2BAECrN,EAAA,EAAC,OAAA1P,EAAoBgmB,EAAM,CAAA,CAAC,KAAK,E,aADjCrL,EAAE,4BAA2B,CAAI,KAAI3a,EAAEgmB,EAAM,CAAA,CAAC,IAAI,CAAA,MAC4BrL,EAAE,4BAA2B,CAAI,KAAI3a,EAAEgmB,EAAM,CAAA,CAAC,IAAI,CAAA,C,GAFlIxY,EAAA0P,EAAAH,CAAC,C,UADC/c,EAAAgmB,EAAM,CAAA,EAAE,OAAKhmB,EAAI2uC,EAAK,GAAAjwB,EAAAgE,CAAA,C,GAO1B,IAAAmK,EAAEpuB,EAAAgkB,EAAA,CAAA,E,EAAFoK,E,OACQ7sB,EAAAmyC,EAAI,E,CAAK,CAAAx3B,EAAE,wBAAwB,EAAA3a,EAAG+pD,EAAW,CAAA,EAAI,CAAApvC,EAAE,6BAA6B,EAAA3a,EAAGgqD,EAAU,CAAA,C,EAAO,CAAA,CAAArvC,EAAE,6BAA6B,EAAA3a,EAAG+pD,EAAW,CAAA,CAAA,GAAO,CAAAnsC,EAAOnM,KAAQmM,G,+BAAf,IAAAA,MAAM5d,EAAAse,CAAA,CAAA,CAAA,GAAC7M,MAAMzR,EAAAse,CAAA,CAAA,CAAA,GAC7K,IAAAwO,EAAE/tB,GAAA,EACAyqB,EAAIhrB,EADNsuB,CAAE,EACArF,EAAA/oB,EAAA8qB,EAAI,EAAA,EACJI,EAAInrB,EADJ+qB,EAAI,CAAA,EAEF5V,EAAIpV,EADNorB,CAAI,EACFjC,EAAAjpB,EAAAkV,EAAI,EAAA,EACJ8L,EAAMjhB,EADNmV,EAAI,CAAA,EACJiU,EAAAnpB,EAAAghB,EAAM,EAAA,EAFR1O,EAAA4Y,CAAI,EAFN5Y,EAAA8b,CAAE,E,MAC2B7c,EAAAwX,EAAA7J,EAAK,CAAA,EAEoB3N,EAAA0X,EAAAlW,EAAK,CAAA,E,QACiC,KAAAkJ,EAAE,gBAAgB,CAAA,C,EAA1GxM,EAAA,QAAAuR,MAA0EpF,GAAK7I,EAAK,CAAA,CAAA,EAJxFjE,EAAA0P,EAAA4P,CAAE,C,GAFN9b,EAAA6b,CAAE,E,iCAcGo9B,EAAK,GAAA,C,kBACJH,EAAIjnC,CAAA,E,cAEO,IAAApF,EAAA1d,MAAA4a,EAAE,6BAA6B,CAAA,EAASmF,EAAA/f,MAAA4a,EAAE,kCAAkC,CAAA,EAA/FqH,EAAOc,EAAA,C,4FACQ,IAAArF,EAAA1d,MAAA4a,EAAE,qBAAqB,CAAA,EAApC6S,EAAKxK,EAAA,C,4CAAkC,IAAA,OAAU,CAAE,OAAAhjB,EAAAw7B,CAAK,CAAA,CAAC,I,EAAlB,IAAA,MAAU,EAAA,CAAE,EAAAA,CAAK,CAAA,CAAC,KAAInU,C,wBAGnD,IAAA5J,EAAA1d,MAAA4a,EAAE,oBAAoB,CAAA,EAD9B6S,EAAAtQ,EAAA,C,uGAEC,IAAA,OAAU,CAAE,OAAAld,EAAAw7B,CAAK,CAAA,CAAC,G,EAAlB,IAAA,MAAU,EAAA,CAAE,EAAAA,CAAK,CAAA,CAAC,IAAGnU,C,cAHpBrnB,EAAA2uC,EAAK,GAAAjwB,EAAAqE,CAAA,C,uCAYD7R,EAAAyX,EAAA,OAAA3oB,EAAAgmB,EAAM,CAAA,CAAC,KAAQ,GAAUkkC,GAAQ,EAAlB,IAAQ,C,CAEnB,IAAAzsC,EAAA1d,MAAAoqD,EAAMD,EAAQ,GAAI,IAAMA,CAAQ,EAE1BpqC,EAAA/f,MAAAoqD,EAAMD,EAAQ,GAAI,IAAM,EAAE,EAHxC18B,EAAAtQ,EAAA,C,mHAEC,IAAA,OAAU,CAAE,OAAAld,EAAAw7B,CAAK,CAAA,CAAC,MAAM0uB,E,EAAxB,IAAA,MAAU,EAAA,CAAE,EAAA1uB,CAAK,CAAA,CAAC,MAAM0uB,GAAQ7iC,C,uBAJjCrnB,EAAA2uC,EAAK,GAAA,CAAA3uC,EAAKm9C,EAAM,GAAAz+B,EAAAuE,CAAA,C,sDAeD,IAAAxF,EAAA1d,MAAA4a,EAAE,kCAAkC,CAAA,EAASmF,EAAA/f,MAAA4a,EAAE,8BAA8B,CAAA,EAAhGqH,EAAO9E,EAAA,C,4FAEG,IAAAO,EAAA1d,MAAA4a,EAAE,6BAA6B,CAAA,EAGhCmF,EAAA/f,MAAA4a,EAAE,qBAAqB,CAAA,EAJ9B6S,EAAArE,EAAA,C,yBAGgB,YAAAnpB,EAAAw7B,CAAK,CAAA,CAAC,YAAY,KAAI,GAAAx7B,EAAMw7B,CAAK,CAAA,CAAC,YAAY,KAAI,IAAA,CAAAx7B,EAAQof,EAAI,GAAImrB,GAAY,E,gIAD7F,IAAA,OAAU,CAAE,OAAAvqC,EAAAw7B,CAAK,CAAA,CAAC,W,EAAlB,IAAA,MAAU,EAAA,CAAE,EAAAA,CAAK,CAAA,CAAC,YAAWnU,C,uBAU5B,IAAAO,EAAC1oB,GAAA,EAAD6oB,EAAArpB,EAAAkpB,EAAC,EAAA,E,iBACCjN,EAAE,gCAA+B,CAChC,IAAG3a,EAAE85C,CAAQ,CAAA,CAAC,kBAAoB74B,GAAGjhB,EAAC85C,CAAQ,CAAA,CAAC,iBAAiB,EAAIn/B,EAAE,uBAAuB,C,KAFhGnN,EAAA0P,EAAA0K,CAAC,C,UADC5nB,EAAA85C,CAAQ,CAAA,EAAE,aAAWp7B,EAAA6D,CAAA,C,GAQzB,IAAA2F,EAAKzpB,EAAAirB,EAAA,CAAA,EACHgB,EAAIlsB,EADN0pB,CAAK,EACHD,EAAAvpB,EAAAgsB,EAAI,EAAA,EACJ4G,EAAQ7yB,EADRisB,EAAI,CAAA,EACJha,GAAA4gB,CAAQ,EAFVtgB,EAAAkX,CAAK,EAAL,IAAA4B,EAAArrB,EAAAypB,EAAK,CAAA,E,CAKQ,IAAAzK,EAAA1d,MAAA4a,EAAE,0BAA0B,CAAA,EAAzC6S,EAAK1D,EAAA,C,yBAAuC,IAAA,OAAU,CAAE,OAAA9pB,EAAAw7B,CAAK,CAAA,CAAC,W,EAAlB,IAAA,MAAU,EAAA,CAAE,EAAAA,CAAK,CAAA,CAAC,YAAWnU,C,kBAC5D,IAAA5J,EAAA1d,MAAA4a,EAAE,4BAA4B,CAAA,EAA3C6S,EAAKrD,EAAA,C,yBAAyC,IAAA,OAAU,CAAE,OAAAnqB,EAAAw7B,CAAK,CAAA,CAAC,S,EAAlB,IAAA,MAAU,EAAA,CAAE,EAAAA,CAAK,CAAA,CAAC,UAASnU,C,IAEzE,IAAAwjB,EAAKpsC,EAAA0rB,EAAA,CAAA,EACH0J,EAAIr1B,EADNqsC,CAAK,EACHziB,EAAA1pB,EAAAm1B,EAAI,EAAA,EACJ8W,EAAQlsC,EADRo1B,EAAI,CAAA,EACJnjB,GAAAi6B,CAAQ,EAFV35B,EAAA65B,CAAK,EAKL,IAAAE,EAAKtsC,EALLosC,EAAK,CAAA,EAMH/W,EAAIt1B,EADNusC,CAAK,EACHziB,EAAA5pB,EAAAo1B,EAAI,EAAA,EACJ2U,EAAMhqC,EADNq1B,EAAI,CAAA,EACJ5iB,EAAAu3B,EAAM,OACE2hB,GAAe,CAAK34C,EAAOmM,KAAQnM,GAAK,EAAA,IAAA,C,wBAApB,IAAAA,MAAMzR,EAAAuhC,CAAA,CAAA,CAAA,GAAC3jB,MAAM5d,EAAAuhC,CAAA,CAAA,CAAA,GACrC,IAAAoH,EAAMxpC,GAAA,EAANopB,EAAA7pB,EAAAiqC,EAAM,EAAA,E,YAAU14B,EAAAsY,EAAA3K,EAAK,CAAA,EAAbgrB,KAAA,EAAAn3B,EAAK,KAAb,EAAM,OAAN,EAAM,QAAAm3B,IAAA,G,GAANp7B,EAAA0P,EAAAyrB,CAAM,C,GAFV33B,EAAAy3B,CAAM,EAAN74B,EAAA64B,CAAM,EAFRz3B,EAAA+5B,CAAK,E,uCAZuBpwB,EAAE,+BAA+B,MAQjCA,EAAE,6BAA6B,MAK/BA,EAAE,+BAA+B,C,GAZ3DzK,EAAAohB,MAAQtxB,EAAqFw7B,CAAK,CAAA,CAAC,YAAW,GAAA,EAAjBA,CAAK,CAAA,CAAC,YAAWnU,CAAA,EAQ9GnX,EAAAy6B,MAAQ3qC,EAAqFw7B,CAAK,CAAA,CAAC,gBAAe,GAAA,EAArBA,CAAK,CAAA,CAAC,gBAAenU,CAAA,EAKlHxX,EAAA44B,MAAMzoC,EAA6Cw7B,CAAK,CAAA,CAAC,aAAY,GAAA,EAAlBA,CAAK,CAAA,CAAC,aAAYnU,CAAA,E,yCApCvErnB,EAAAmyC,EAAI,GAAAzzB,EAAA8J,CAAA,C,uBA8Ca,IAAA/K,EAAA1d,MAAA4a,EAAE,wBAAwB,CAAA,EAASmF,EAAA/f,MAAA4a,EAAE,yBAAyB,CAAA,EAAjFqH,EAAO9E,EAAA,C,iGAGK,IAAAO,EAAA1d,MAAA4a,EAAE,wBAAwB,CAAA,EADlC6S,EAAAtQ,EAAA,C,4HAEC,IAAA,OAAU,CAAE,OAAAld,EAAAw7B,CAAK,CAAA,CAAC,W,EAAlB,IAAA,MAAU,EAAA,CAAE,EAAAA,CAAK,CAAA,CAAC,YAAWnU,C,uBAO9BS,EAAI7nB,EAAAirC,CAAA,EAAJjiB,EAAAvqB,EAAAopB,EAAI,EAAA,EAAJkK,EAAAvzB,EAAAqpB,EAAI,CAAA,E,MAEF,IAAAmK,EAAC/yB,GAAA,EAADgqB,EAAAxqB,EAAAuzB,EAAC,EAAA,E,iBACCtX,EAAE,6BAA4B,CAC7B,IAAG3a,EAAE85C,CAAQ,CAAA,CAAC,aAAe74B,GAAGjhB,EAAC85C,CAAQ,CAAA,CAAC,YAAY,EAAIn/B,EAAE,uBAAuB,C,KAFtFnN,EAAA0P,EAAA+U,CAAC,C,UADCjyB,EAAA85C,CAAQ,GAAAp7B,EAAA6K,CAAA,C,GAD8Bxb,MAAAnP,EAAAqqB,EAAAjpB,EAAAw7B,CAAK,CAAA,CAAC,WAAW,CAAA,E,gBAVzDx7B,EAAA2uC,EAAK,GAAA3uC,EAAIm9C,EAAM,EAAAz+B,EAAA0K,CAAA,EAAA1K,EAAAwF,EAAA,EAAA,C,4CAFnBlkB,EAAAqqD,EAAG,GAAA3rC,EAAAiL,CAAA,C,uBAyBc,IAAAlM,EAAA1d,MAAA4a,EAAE,8BAA8B,CAAA,EAASmF,EAAA/f,MAAAC,EAAAsqD,EAAI,EAAG3vC,EAAE,mCAAmC,EAAI,IAAI,EAAhHqH,EAAO9E,EAAA,C,kGAGK,IAAAO,EAAA1d,MAAA4a,EAAE,uBAAuB,CAAA,EAG1BmF,EAAA/f,MAAA4a,EAAE,yBAAyB,CAAA,EAJlC6S,EAAAtQ,EAAA,C,yBAGe,WAAAld,EAAAw7B,CAAK,CAAA,CAAC,OAAO,KAAI,GAAA,CAAAx7B,EAAOof,EAAI,GAAI5H,GAAQ,E,sHADtD,IAAA,OAAU,CAAE,OAAAxX,EAAAw7B,CAAK,CAAA,CAAC,M,EAAlB,IAAA,MAAU,EAAA,CAAE,EAAAA,CAAK,CAAA,CAAC,OAAMnU,C,cAHvBrnB,EAAAsqD,EAAI,GAAA5rC,EAAAqL,CAAA,C,iBAaK,IAAAtM,EAAA1d,MAAA4a,EAAE,kCAAkC,CAAA,EAAjD6S,EAAK+E,EAAA,C,yBAA+C,IAAA,OAAU,CAAE,OAAAvyB,EAAAw7B,CAAK,CAAA,CAAC,gB,EAAlB,IAAA,MAAU,EAAA,CAAE,EAAAA,CAAK,CAAA,CAAC,iBAAgBnU,C,kBACzE,IAAA5J,EAAA1d,MAAA4a,EAAE,0BAA0B,CAAA,EAAzC6S,EAAKmF,EAAA,C,yBAAuC,IAAA,OAAU,CAAE,OAAA3yB,EAAAw7B,CAAK,CAAA,CAAC,Q,EAAlB,IAAA,MAAU,EAAA,CAAE,EAAAA,CAAK,CAAA,CAAC,SAAQnU,C,kBAE9D,IAAA5J,EAAA1d,MAAA4a,EAAE,6BAA6B,CAAA,EAEzBmF,EAAA/f,MAAAC,EAAAuqD,EAAM,EAAG,GAAK5vC,EAAE,yBAAyB,CAAA,EAHvD6S,EAAAoF,EAAA,C,wDAEC,IAAA,OAAU,CAAE,OAAA5yB,EAAAw7B,CAAK,CAAA,CAAC,W,EAAlB,IAAA,MAAU,EAAA,CAAE,EAAAA,CAAK,CAAA,CAAC,YAAWnU,C,wBAIf,IAAA5J,EAAA1d,MAAA4a,EAAE,2BAA2B,CAAA,EAA6CmF,EAAA/f,MAAA4a,EAAE,yBAAyB,CAAA,EAAlH6S,EAAKtQ,EAAA,C,wDAAwC,IAAA,OAAU,CAAE,OAAAld,EAAAw7B,CAAK,CAAA,CAAC,S,EAAlB,IAAA,MAAU,EAAA,CAAE,EAAAA,CAAK,CAAA,CAAC,UAASnU,C,aAE3D,IAAA5J,EAAA1d,MAAA4a,EAAE,yBAAyB,CAAA,EAA2CmF,EAAA/f,MAAA4a,EAAE,oCAAoC,CAAA,EAAzH6S,EAAKtQ,EAAA,C,wDAAsC,IAAA,OAAU,CAAE,OAAAld,EAAAw7B,CAAK,CAAA,CAAC,O,EAAlB,IAAA,MAAU,EAAA,CAAE,EAAAA,CAAK,CAAA,CAAC,QAAOnU,C,cAHlErnB,EAAAuqD,EAAM,EAAA7rC,EAAA0L,CAAA,EAAA1L,EAAA+J,EAAA,EAAA,C,4CAtBVzoB,EAAAm9C,EAAM,GAAA,CAAAn9C,EAAKmyC,EAAI,GAAA,CAAAnyC,EAAKqqD,EAAG,GAAA3rC,EAAAmgB,CAAA,C,uBA+BN,IAAAphB,EAAA1d,MAAA4a,EAAE,4BAA4B,CAAA,EAASmF,EAAA/f,MAAA4a,EAAE,sCAAqC,CAAI,KAAI3a,EAAE6V,EAAK,CAAA,CAAA,CAAA,EAAhHmM,EAAO9E,EAAA,C,4FAEG,IAAAO,EAAA1d,MAAAC,EAAAwqD,EAAW,EAAG7vC,EAAE,4BAA4B,EAAIA,EAAE,0BAA0B,CAAA,EADpF6S,EAAA2S,EAAA,C,4CAEC,IAAA,OAAU,CAAE,OAAAngC,EAAAw7B,CAAK,CAAA,CAAC,Q,EAAlB,IAAA,MAAU,EAAA,CAAE,EAAAA,CAAK,CAAA,CAAC,SAAQnU,C,wBAMjB,IAAA5J,EAAA1d,MAAA4a,EAAE,8BAA8B,CAAA,EAI1BmF,EAAA/f,MAAAC,EAAA2uC,EAAK,EAAG,GAAK3uC,EAAA85C,CAAQ,CAAA,EAAE,WAAan/B,EAAE,0BAA0B,EAAI,EAAE,EALpF6S,EAAAtQ,EAAA,C,2FAGC,IAAA,OAAU,CAAE,OAAAld,EAAAw7B,CAAK,CAAA,CAAC,Y,EAAlB,IAAA,MAAU,EAAA,CAAE,EAAAA,CAAK,CAAA,CAAC,aAAYnU,C,cAJ7BrnB,EAAAyqD,EAAW,GAAA/rC,EAAAwgB,CAAA,C,yCAWA,IAAAzhB,EAAA1d,MAAA4a,EAAE,wBAAwB,CAAA,EAAvC6S,EAAK4T,EAAA,C,4CAAqC,IAAA,OAAU,CAAE,OAAAphC,EAAAw7B,CAAK,CAAA,CAAC,M,EAAlB,IAAA,MAAU,EAAA,CAAE,EAAAA,CAAK,CAAA,CAAC,OAAMnU,C,kBACrD,IAAA5J,EAAA1d,MAAA4a,EAAE,uBAAuB,CAAA,EAAtC6S,EAAKqU,EAAA,C,4CAAoC,IAAA,OAAU,CAAE,OAAA7hC,EAAAw7B,CAAK,CAAA,CAAC,K,EAAlB,IAAA,MAAU,EAAA,CAAE,EAAAA,CAAK,CAAA,CAAC,MAAKnU,C,IAEhE,IAAAotB,EAAKh2C,EAAAojC,EAAA,CAAA,EACH9N,EAAIv1B,EADNi2C,CAAK,EACHnrB,EAAA5qB,EAAAq1B,EAAI,EAAA,EACJ6W,EAAAnsC,EADAs1B,EAAI,CAAA,EACJrjB,GAAAk6B,CAAA,EAFF55B,EAAAyjC,CAAK,E,iBAEH/kC,EAAAk7B,EAAA,cAAA9qB,CAAA,C,OAD0BnF,EAAE,4BAA4B,MAK1C3a,EAAA2uC,EAAK,EAAG,8BAAgCh0B,EAAE,0BAA0B,C,GAJlFzK,EAAA06B,MAAA5qC,EAGaw7B,CAAK,CAAA,CAAC,WAAU,GAAA,EAAhBA,CAAK,CAAA,CAAC,WAAUnU,CAAA,E,gBAT7BrnB,EAAAwqD,EAAW,GAAA9rC,EAAA4gB,CAAA,C,iCAgBbgW,EAAKr1C,EAAA89C,CAAA,EACH/pB,EAAIx1B,EADN82C,CAAK,EACH7rB,EAAA/qB,EAAAs1B,EAAI,EAAA,EACJ0gB,EAAMj2C,EADNu1B,EAAI,CAAA,EAEF2gB,EAAMn2C,EADRk2C,CAAM,EACJ7qB,EAAAnrB,EAAAi2C,EAAM,EAAA,EAAN,EAAM,MAAN,EAAM,QAAA,qBACN,IAAAc,EAAMh3C,EADNk2C,CAAM,EACN1qB,EAAAvrB,EAAA+2C,EAAM,EAAA,EAAN,EAAM,MAAN,EAAM,QAAA,sBACN,IAAAmB,EAAMn4C,EADNg3C,CAAM,EACNlrB,EAAA7rB,EAAAk4C,EAAM,EAAA,EAAN,EAAM,MAAN,EAAM,QAAA,gBAHR5lC,EAAA0jC,CAAM,EAAN9kC,EAAA8kC,CAAM,EAFR1jC,EAAAskC,CAAK,EAAL,IAAAnT,EAAA1jC,EAAA62C,EAAK,CAAA,E,CAUG,IAAA73B,EAAA1d,MAAA4a,EAAE,6BAA6B,CAAA,EAKzBmF,EAAA/f,MAAAC,EAAAsqD,EAAI,EAAG3vC,EAAE,4BAA4B,EAAI,WAAW,EANlE6S,EAAA2U,EAAA,C,mHAEC,IAAA,OAAU,CAAE,OAAAniC,EAAAw7B,CAAK,CAAA,CAAC,M,EAAlB,IAAA,MAAU,EAAA,CAAE,EAAAA,CAAK,CAAA,CAAC,OAAMnU,C,oDAVG1M,EAAE,6BAA6B,MAEpBA,EAAE,4BAA4B,MAC7BA,EAAE,6BAA6B,MACrCA,EAAE,8BAA8B,C,GAHhE9K,EAAA6kC,MAAM10C,EAA6Cw7B,CAAK,CAAA,CAAC,gBAAe,GAAA,EAArBA,CAAK,CAAA,CAAC,gBAAenU,CAAA,E,gBAHxErnB,EAAAm9C,EAAM,GAAAz+B,EAAA0gB,CAAA,C,4CAjCT,CAAAp/B,EAAAmyC,EAAI,GAAA,CAAAnyC,EAAKqqD,EAAG,GAAA3rC,EAAAigB,CAAA,C,WAwDV+rB,EAAM,GAAA,C,mBACM,IAAAjtC,EAAA1d,MAAA4a,EAAE,6BAA6B,CAAA,EAASmF,EAAA/f,MAAA4a,EAAE,2BAA0B,CAAI,KAAI3a,EAAE6V,EAAK,CAAA,CAAA,CAAA,EAAtGmM,EAAO2gB,EAAA,C,4FAIJ,IAAAllB,EAAA1d,MAAA4a,EAAE,sBAAqB,CAAI,KAAI3a,EAAE6V,EAAK,CAAA,CAAA,CAAA,EAH/B2Q,GAAMuc,MAAA/iC,EACbw7B,CAAK,CAAA,CAAC,OAAS,eACd,GAAE,EAAMA,CAAK,CAAA,CAAC,KAAO2X,EAAK,WAAa,iBAAYnzC,EAAAyd,CAAA,MAEpD,IAAI,C,qBAKK,IAAAA,EAAA1d,MAAA4a,EAAE,8BAA8B,CAAA,EADxC6S,EAAAtQ,EAAA,C,iJAEC,IAAA,OAAU,CAAE,OAAAld,EAAAw7B,CAAK,CAAA,CAAC,Y,EAAlB,IAAA,MAAU,EAAA,CAAE,EAAAA,CAAK,CAAA,CAAC,aAAYnU,C,cAH7BrnB,EAAAw7B,CAAK,CAAA,CAAC,OAAS,YAAU9c,EAAA0hB,CAAA,C,gDAYZ,IAAA3iB,EAAA1d,MAAA4a,EAAE,8BAA8B,CAAA,EAAnDqH,EAAO8hB,EAAA,C,0EAEiE,IAAArmB,EAAA1d,MAAA4a,EAAE,6BAA6B,CAAA,EAAGmF,EAAA/f,MAAA4a,EAAE,kCAAkC,CAAA,EAAlI6L,GAAMtJ,MAAAld,EAACw7B,CAAK,CAAA,CAAC,gBAAc,GAAE,EAAMA,CAAK,CAAA,CAAC,YAAc2X,MAAEnzC,EAAAyd,CAAA,MAAAzd,EAAA8f,CAAA,CAAA,C,WAD9D9f,EAAAmyC,EAAI,GAAAzzB,EAAAgiB,CAAA,C,iBAKD,IAAAjjB,EAAA1d,MAAAC,EAAAmyC,EAAI,EAAGx3B,EAAE,6BAA6B,EAAIA,EAAE,wBAAwB,CAAA,EAK9DmF,EAAA/f,MAAA4a,EAAE,2BAA2B,CAAA,EAN3C6S,EAAA4W,EAAA,C,mHAEC,IAAA,OAAU,CAAE,OAAApkC,EAAAw7B,CAAK,CAAA,CAAC,Y,EAAlB,IAAA,MAAU,EAAA,CAAE,EAAAA,CAAK,CAAA,CAAC,aAAYnU,C,uDASZ,IAAA5J,EAAA1d,MAAA4a,EAAE,4BAA4B,CAAA,EAAjDqH,EAAO9E,EAAA,C,kDAIJ,IAAAO,EAAA1d,MAAA4a,EAAE,wBAAwB,CAAA,EACvBmF,EAAA/f,MAAA,GAAA4a,EAAE,6BAA6B,EAAA,GAAKgwC,GAAM,eAAgBhwC,EAAE,6BAA6B,GAAA,EAJrF6L,GAAMtJ,MAAAld,EACbw7B,CAAK,CAAA,CAAC,oBACL,GAAE,EAAMA,CAAK,CAAA,CAAC,gBAAkB2X,MAAEnzC,EAAAyd,CAAA,MAAAzd,EAAA8f,CAAA,CAAA,C,oCAJpC9f,EAAAsqD,EAAI,GAAA5rC,EAAAojB,CAAA,C,uBAYa,IAAArkB,EAAA1d,MAAA4a,EAAE,uBAAuB,CAAA,EAASmF,EAAA/f,MAAA4a,EAAE,gCAAgC,CAAA,EAAvFqH,EAAO9E,EAAA,C,4FAEG,IAAAO,EAAA1d,MAAAC,EAAAmyC,EAAI,EAAGx3B,EAAE,6BAA6B,EAAI3a,EAAAsqD,EAAI,EAAG3vC,EAAE,6BAA6B,EAAIA,EAAE,6BAA6B,CAAA,EAD3H6S,EAAAoY,EAAA,C,oFAEC,IAAA,OAAU,CAAE,OAAA5lC,EAAAw7B,CAAK,CAAA,CAAC,Y,EAAlB,IAAA,MAAU,EAAA,CAAE,EAAAA,CAAK,CAAA,CAAC,aAAYnU,C,iBAKzBnW,EAAA80B,EAAA,OAAA6kB,EAAO,QAAM,CAAG7X,KAAK,EAAAhzC,EAAQmyC,EAAI,GAAIa,IAAU,iBAAgB,GAAA,CAAOA,EAAOp1B,KAAQo1B,GAAK,EAAA,IAAA,C,wBAApB,IAAAA,MAAMhzC,EAAAukC,CAAA,CAAA,CAAA,GAAC3mB,MAAM5d,EAAAukC,CAAA,CAAA,CAAA,G,CAIzE,IAAA9mB,EAAA1d,MAAAC,EAAAmyC,EAAI,EAAGx3B,EAAE,+BAA+B,EAAIq4B,EAAK,CAAA,EAH/DxlB,EAAAtQ,EAAA,C,YACE,OAAAU,EAAK,C,4FACN,IAAA,OAAU,CAAE,OAAA5d,EAAAw7B,CAAK,CAAA,CAAC,OAAOwX,EAAK,E,EAA9B,IAAA,MAAU,EAAA,CAAE,EAAAxX,CAAK,CAAA,CAAC,OAAOwX,EAAK,GAAA3rB,C,gDAZjCrnB,EAAAm9C,EAAM,GAAAz+B,EAAA0jB,CAAA,C,WAuBHsI,EAAO,GAAA,C,CACK,IAAAjtB,EAAA1d,MAAA4a,EAAE,+BAA+B,CAAA,EAASmF,EAAA/f,MAAA4a,EAAE,gCAA+B,CAAI,KAAI3a,EAAE6V,EAAK,CAAA,CAAA,CAAA,EAA7GmM,EAAO9E,EAAA,C,kGAE6D,IAAAO,EAAA1d,MAAA4a,EAAE,2BAA0B,CAAI,KAAI3a,EAAE6V,EAAK,CAAA,CAAA,CAAA,EAAnG2Q,GAAMtJ,MAAAld,EAACw7B,CAAK,CAAA,CAAC,cAAY,GAAE,EAAMA,CAAK,CAAA,CAAC,UAAY2X,MAAEnzC,EAAAyd,CAAA,MAAmD,IAAI,C,WADjHzd,EAAAqqD,EAAG,GAAA3rC,EAAAkkB,CAAA,C,yCAME,IAAAnlB,EAAA1d,MAAA4a,EAAE,iCAAiC,CAAA,EAK7BmF,EAAA/f,MAAAC,EAAAqqD,EAAG,EAAG1vC,EAAE,8BAA8B,EAAI,gDAAgD,EANxG6S,EAAAunB,EAAA,C,mHAEC,IAAA,OAAU,CAAE,OAAA/0C,EAAAw7B,CAAK,CAAA,CAAC,e,EAAlB,IAAA,MAAU,EAAA,CAAE,EAAAA,CAAK,CAAA,CAAC,gBAAenU,C,kBAO1B,IAAA5J,EAAA1d,MAAA4a,EAAE,kCAAkC,CAAA,EAD5C6S,EAAAwnB,EAAA,C,qIAEC,IAAA,OAAU,CAAE,OAAAh1C,EAAAw7B,CAAK,CAAA,CAAC,gB,EAAlB,IAAA,MAAU,EAAA,CAAE,EAAAA,CAAK,CAAA,CAAC,iBAAgBnU,C,IAMnC,IAAAqY,EAACjhC,EAAAu2C,EAAA,CAAA,EAADvqB,EAAAjsB,EAAAkhC,CAAC,EAECX,EAAItgC,EAAAgsB,CAAA,EAAJE,EAAAjsB,EAAAqgC,CAAI,EAAJlU,EAAApsB,EAAAsgC,CAAI,EAFN/tB,EAAA0uB,CAAC,EAAD,IAAAuV,EAAAx2C,EAAAihC,EAAC,CAAA,E,MAMC,IAAAqC,EAACniC,GAAA,EAADmrB,EAAArsB,EAAAqjC,EAAC,EAAA,E,iBAAkBpnB,EAAE,oCAAmC,CAAI,MAAK3a,EAAE85C,CAAQ,CAAA,CAAC,WAAW,CAAA,C,GAAvFtsC,EAAA0P,EAAA6kB,CAAC,C,UADC/hC,EAAA85C,CAAQ,GAAAp7B,EAAAskB,CAAA,C;U,eAJVroB,EAAE,gCAAgC,MACK3a,EAAAw7B,CAAK,CAAA,CAAC,IAAI,KAAI,GAAM,UAC3D7gB,EAAE,qCAAqC,C,oBApBvC3a,EAAAw7B,CAAK,CAAA,CAAC,WAASx7B,EAAIqqD,EAAG,IAAA3rC,EAAA4kB,CAAA,C,oCA1vBzB5uB,EAAwBtU,EAAA6c,EAAA,OAAA,EAAG,IAAI,EAE7BP,EAASC,GAAS,EAElBkuC,EAAM,CAAI,QAAS,iBAAkB,OAAQ,aAAc,cAAe,qBAAsB,SAAW,CAAA,CAAA,IAC9G,GAAK,CAAM7X,EAAOr4B,EAAC,oBAAqBq4B,GAAK,CAAA,CAAA,EAG1CoX,EAAe,CAClB,CAAA,GAAIzvC,EAAE,+BAA+B,CAAA,E,CACrC,uDAAwDA,EAAE,sCAAsC,C,GAChG,yDAA0DA,EAAE,iCAAiC,C,GAC7F,wDAAyDA,EAAE,uCAAuC,C,GAG/FwvC,EAAK,CACT,OAAM,CAAGxvC,EAAE,wBAAwB,EAAG,eAAe,EACrD,OAAM,CAAGA,EAAE,wBAAwB,EAAG,sC,EACtC,MAAK,CAAGA,EAAE,uBAAuB,EAAG,OAAO,C,EAavCowC,EAAO,+GAEPla,EAAK;;;;;;;;;;;;;;;;;QASLka,EAAO;;IAIPC,EAAS,CACZ,CAAA,OAAQ,QAAQ,EAChB,CAAA,WAAY,QAAQ,EACpB,CAAA,mBAAoB,QAAQ,EAC5B,CAAA,WAAY,QAAQ,EACpB,CAAA,cAAe,QAAQ,EACvB,CAAA,YAAa,QAAQ,EACrB,CAAA,WAAY,QAAQ,EACpB,CAAA,eAAgB,QAAQ,EACxB,CAAA,SAAU,WAAW,EACrB,CAAA,eAAgB,QAAQ,EACxB,CAAA,SAAU,MAAM,EAChB,CAAA,SAAU,QAAQ,EAClB,CAAA,UAAW,QAAQ,EACnB,CAAA,kBAAmB,QAAQ,EAC3B,CAAA,eAAgB,QAAQ,EACxB,CAAA,SAAU,QAAQ,EAClB,CAAA,QAAS,QAAQ,EACjB,CAAA,aAAc,QAAQ,EACtB,CAAA,cAAe,QAAQ,EACvB,CAAA,YAAa,QAAQ,EACrB,CAAA,kBAAmB,QAAQ,EAC3B,CAAA,cAAe,QAAQ,EACvB,CAAA,eAAgB,QAAQ,EACxB,CAAA,OAAQ,QAAQ,EAChB,CAAA,cAAe,SAAS,EACxB,CAAA,kBAAmB,SAAS,EAC5B,CAAA,eAAgB,WAAW,EAC3B,CAAA,eAAgB,WAAW,EAC3B,CAAA,YAAa,SAAS,EACtB,CAAA,kBAAmB,WAAW,EAC9B,CAAA,mBAAoB,MAAM,EAC1B,CAAA,cAAe,QAAQ,C,EAGpB5Z,EAAY,GAAK,CAAA,GAAS6Z,EAAK,GAAKD,CAAS,CAAA,CAAE,KAAG,CAAGj1C,EAAM0X,KAAI,IAAU1X,EAAI,IAAK0X,GAAI,CAAA,CAAI,KAAK,IAAI,EACnGy9B,EAAU,GAAK,CAAA,GAASD,EAAK,GAAKD,CAAS,CAAA,CAAE,KAAG,CAAGj1C,KAAI,GAASA,EAAI,KAAMA,GAAI,CAAA,CAAI,KAAK,IAAI,EAE3Fo1C,EAAY,CAAA,CACf,MAAO,KAAK,EAAA,CACZ,SAAU,IAAI,EAAA,CACd,eAAgB,MAAM,CAAA,EAGnBC,EAAM;sBACQha,EAAS+Z,CAAY,CAAA,CAAE,QAAQ,gBAAiB,gBAAgB,EAAA;uBAC/DD,EAAOC,CAAY,EAAA;;IAIlCE,EAAM;sBACQja,EAAQ,CAAA,CAAG,MAAO,KAAK,CAAA,CAAA,EAAA;uBACtB8Z,EAAM,CAAA,CAAG,MAAO,KAAK,CAAA,CAAA,EAAA;;IAgBpCpX,EAAS,GACb,OAAO,QAAQh/B,GAAI,CAAA,CAAA,CAAA,CAChB,KAAG,CAAGiB,EAAMtE,KAAK,GAASsE,EAAI,GAAItE,GAAK,CAAA,CACvC,KAAK,GAAG,EAEP24B,GAAS,IAAM,CACnB,IAAKC,EAAO,OAAS,GAAKA,EAAO,IACjC,KAAMA,EAAO,OAAS,GAAKA,EAAO,KAClC,OAAQA,EAAO,OAAS,KAAOA,EAAO,IACtC,SAAUA,EAAO,SACjB,MAAK,CAAA,GAAOA,EAAO,QAAQ,EAC3B,iBAAkB,GAClB,SAAU,GACV,YAAa,GACb,UAAW,GACX,SAAU,GACV,aAAc,GACd,OAAQ,GACR,aAAcA,EAAO,WAAa,OAAS,MAAQA,EAAO,WAAa,OAAS,UAAY,KAC5F,OAAQ,OAAO,YAAYwgB,EAAO,KAAG,CAAG7X,KAAK,CAAOA,EAAO,EAAE,CAAA,CAAA,EAC7D,OAAQ,GACR,QAAS,GACT,gBAAiB3I,EAAO,MAAM,SAAS,aAAa,EAAI,gBAAkB,qBAC1E,aAAc,GACd,OAAQ,GACR,MAAO,GACP,WAAY,GACZ,YAAa,GACb,UAAW,GACX,gBAAiB,GACjB,YAAa,GACb,YAAa,GACb,aAAc,GACd,KAAM,aACN,YAAa,EAAQA,EAAO,YAC5B,gBAAiB,GACjB,aAAc,GACd,aAAc,GACd,UAAW,EAAQA,EAAO,UAC1B,iBAAkBA,EAAO,iBAAe,CAAA,EAAA,CAAQ,KAAK,GAAG,EACxD,iBAAkB,GAClB,YAAa,E,GAGTsC,GAAW,IAAQ,CACpB,GAAAvC,GAAK,CAAG,IAAK0P,EAAS,IAAK,KAAMA,EAAS,KAAM,SAAUA,EAAS,SAAU,MAAK,CAAA,EAAM,SAAQ,CAAA,EAAM,OAAQ,E,GACjH,IAAKA,EAAS,IACd,KAAMA,EAAS,KACf,OAAQA,EAAS,OACjB,iBAAkBA,EAAS,kBAAoB,GAC/C,SAAUA,EAAS,UAAY,GAC/B,YAAaA,EAAS,aAAe,GACrC,UAAWA,EAAS,WAAa,GACjC,SAAUA,EAAS,UAAY,GAC/B,OAAQA,EAAS,OAAO,KAAK,GAAG,EAChC,aAAcA,EAAS,aACvB,OAAM,CAAO,GAAA,OAAO,YAAY+Q,EAAO,KAAG,CAAG7X,KAAK,CAAOA,EAAO,EAAE,CAAA,CAAA,EAAQ,GAAA8G,EAAS,M,EACnF,OAAQA,EAAS,QAAU,GAC3B,QAASA,EAAS,SAAW,GAC7B,gBAAiBA,EAAS,gBAC1B,aAAcA,EAAS,cAAgB,GACvC,OAAQA,EAAS,QAAU,GAC3B,MAAOA,EAAS,OAAS,GACzB,YAAaA,EAAS,aAAe,GACrC,UAAWA,EAAS,WAAa,GACjC,gBAAiBA,EAAS,iBAAmB,GAC7C,YAAaA,EAAS,aAAe,GACrC,aAAcA,EAAS,cAAgB,GACvC,KAAMA,EAAS,KACf,YAAaA,EAAS,YACtB,gBAAiBA,EAAS,gBAC1B,aAAcA,EAAS,aAAa,KAAK,GAAG,EAC5C,aAAcA,EAAS,aAAa,KAAK,GAAG,EAC5C,UAAWA,EAAS,UACpB,gBAAiBA,EAAS,gBAAgB,KAAK,GAAG,EAClD,iBAAkBhG,EAAMgG,EAAS,gBAAgB,EACjD,YAAaA,EAAS,aAAe,E,GAGjCjqB,GAAW5P,GAAc,EAE3B65B,EAAWz5C,EAAO,IAAI,EACtBirD,EAAYjrD,EAAMC,EAAA,CAAA,CAAA,CAAA,EAClB6pC,GAAU9pC,EAAMC,EAAA,CAAA,CAAA,CAAA,EAChBk7B,EAAQn7B,EAAO,IAAI,EACnBkrD,GAAWlrD,EAAO,EAAE,EACpBulB,GAAUvlB,EAAO,EAAI,EACrB+e,GAAO/e,EAAO,EAAK,EAEjBsuC,GAAK5uC,MAAAkd,EAAA,cAA4B,KAAK,EACtC+I,GAAMjmB,MAAAC,EACV2uC,EAAK,EAAI3uC,EAAAmqC,EAAO,CAAA,CAAC,KAAM,GAAWE,EAAO,MAAQ31B,EAAI,CAAA,GAAK,KAAS1U,EAAAmqC,EAAO,CAAA,CAAC,KAAM,GAAWE,EAAO,MAAGrqC,EAAK85C,CAAQ,CAAA,EAAE,MAAM,GAAK,IAAI,EAEhIqD,GAAMp9C,MAAAC,GAAY2uC,EAAK,GAAG,EAAO3uC,EAACgmB,EAAM,CAAA,EAAE,MAAc,EACxDmsB,GAAIpyC,MAAAC,EAAYw7B,CAAK,CAAA,EAAE,WAAa,MAAM,EAC1C+uB,GAAMxqD,MAAAC,EAAYw7B,CAAK,CAAA,EAAE,WAAa,QAAQ,EAC9C8uB,GAAIvqD,MAAAC,EAAYw7B,CAAK,CAAA,EAAE,WAAa,MAAM,EAC1C6uB,GAAGtqD,MAAAC,EAAYw7B,CAAK,CAAA,EAAE,WAAa,KAAK,EACxCgvB,GAAWzqD,MAAAC,EAAYw7B,CAAK,CAAA,EAAE,kBAAoB,eAAe,EACjEmvB,GAAM,OAAU,OAAW,IAAc,GAAK,OAAO,SAAS,OAC9DZ,GAAWhqD,MAAA,GAAe4qD,GAAM,kBAAA3qD,EAAmBw7B,CAAK,CAAA,EAAE,KAAK,KAAI,GAAM,IAAG,UAAA,EAC5EwuB,GAAUjqD,MAAA,GAAe4qD,GAAM,kBAAA3qD,EAAmBw7B,CAAK,CAAA,EAAE,KAAK,KAAI,GAAM,IAAG,UAAA,EAC3E3lB,GAAK9V,MAAAC,EAAYw7B,CAAK,CAAA,EAAE,KAAK,KAAI,GAAM7gB,EAAE,6BAA6B,CAAA,EACtE6wC,GAAKzrD,MAAY,EAAOC,GAACw7B,CAAK,GAAAx7B,EAAK2uC,EAAK,GAAI,KAAK,UAAS3uC,EAACw7B,CAAK,CAAA,IAAAx7B,EAAMurD,EAAQ,EAAA,EAE9E1vB,GAAK97B,MAAA,CAEN,CAAA,KAAM,GAAI4a,EAAE,uBAAuB,CAAA,EACnC,CAAA3a,EAAAqqD,EAAG,GAAA,CAAK,UAAW,WAAY1vC,EAAE,yBAAyB,CAAA,EAC1D,CAAA3a,EAAAmyC,EAAI,GAAA,CAAK,UAAW,WAAYx3B,EAAE,yBAAyB,CAAA,E,CAC3D,WAAY,YAAaA,EAAE,2BAA0B,CAAI,MAAK3a,EAAEsrD,CAAS,CAAA,CAAC,MAAM,CAAA,C,CACjF,CAAA,CAAA,OAAO,OAAO,CAAA,EAGZ7f,GAAK1rC,MAAAC,EAAYmqC,EAAO,CAAA,CAAC,OAAQ,GAAM,CAAME,EAAO,MAAM,CAAA,EAC1DohB,GAAO1rD,MAAAC,EAAYmqC,EAAO,CAAA,CAAC,OAAQ,GAAWE,EAAO,MAAM,CAAA,EAEjE,eAAelkB,IAAO,CACpBrX,EAAA8W,GAAU,EAAI,EAEd,IAAMQ,EAAO,MAAMyJ,GAAS,YAAO7vB,EACjC2uC,EAAK,EAAO1xB,EAAA,IAAA,MAAK,mBAAoB8tC,EAAO,GAAA,EAAY9tC,EAAA,IAAA,MAAM4zB,EAAK,CAAI,IAAG5zB,EAAA,WAAA,CAAA,CAAA,EAG5EnO,EAAA8W,GAAU,EAAK,EAEVQ,IAELtX,EAAAq7B,GAAU/jB,EAAK,gBAAe,EAAA,EAE5BpmB,EAAE2uC,EAAK,GACP7/B,EAAAgrC,EAAW,IAAI,EACfhrC,EAAAw8C,EAAS,CAAA,EAAA,EAAA,IAIXx8C,EAAAgrC,EAAW1zB,EAAK,SAAQ,EAAA,EACxBtX,EAAAw8C,EAAYllC,EAAK,YAAW,EAAA,EAC5BtX,EAAA0sB,EAAKx7B,EAAG85C,CAAQ,EAAGnN,GAAO3sC,EAAC85C,CAAQ,CAAA,EAAI,KAAI,EAAA,EAC3ChrC,EAAAy8C,GAAW,KAAK,UAASvrD,EAACw7B,CAAK,CAAA,EAAA,EAAA,GACjC,CAEA5sB,MAAc,C,cAEZC,EAAQsX,EAAI,CACd,CAAC,EAEDvX,MAAc,CACZ,GAAE,CAAA5O,EAAG2uC,EAAK,EAAE,OAEZ,IAAMtE,EAAMrqC,EAAGgmB,EAAM,EAErBnX,MAAc,CACZC,EAAA0sB,EAAQ6O,EAASD,GAAMC,CAAM,EAAI,KAAI,EAAA,CACvC,CAAC,CACH,CAAC,EAED,IAAMqhB,GAAW,GAAUj6C,GAAO,KAAI,GAAM,KACtCk6C,GAAS,GAAUl6C,EAAM,MAAM,QAAQ,CAAA,CAAE,OAAO,OAAO,EACvDm6C,GAAU,GACd,OAAO,YACLD,GAAMl6C,CAAK,CAAA,CACR,IAAK,GAASQ,EAAK,MAAM,GAAG,CAAA,CAAA,CAC5B,QAAM,CAAG8D,EAAMjB,KAAUiB,GAAQjB,IAAS,IAAA,EAAS,CAAA,CACnD,KAAG,CAAGiB,EAAI,GAAKT,KAAI,CAAOS,EAAMT,EAAK,KAAK,GAAG,CAAA,CAAA,CAAA,EAG9CK,OACJ,OAAO,YACL,OAAO,QAAO3V,EAACw7B,CAAK,CAAA,CAAC,MAAM,CAAA,CACxB,KAAG,CAAGwX,EAAOv3B,KAAI,CAAOu3B,EAAOv3B,GAAM,KAAI,CAAA,CAAA,CAAA,CACzC,QAAM,EAAKA,KAAUA,CAAI,CAAA,EAG1BowC,QAAc,CAClB,YAAaH,GAAO1rD,EAACw7B,CAAK,CAAA,CAAC,WAAW,EACtC,UAAWkwB,GAAO1rD,EAACw7B,CAAK,CAAA,CAAC,SAAS,EAClC,gBAAiBkwB,GAAO1rD,EAACw7B,CAAK,CAAA,CAAC,eAAe,EAC9C,aAAckwB,GAAO1rD,EAACw7B,CAAK,CAAA,CAAC,YAAY,C,GAG1C,SAAS5f,IAAY,CACnB,IAAM9G,EAAI,CACR,IAAG9U,EAAEw7B,CAAK,CAAA,CAAC,IAAI,KAAI,EACnB,KAAIx7B,EAAEw7B,CAAK,CAAA,CAAC,KAAK,KAAI,EACrB,KAAIx7B,EAAEw7B,CAAK,CAAA,CAAC,KACZ,YAAWx7B,GAAEmyC,EAAI,GAAQnyC,EAAGw7B,CAAK,CAAA,CAAC,YAClC,gBAAex7B,EAAEsqD,EAAI,EAAAtqD,EAAGw7B,CAAK,CAAA,CAAC,gBAAkB,GAChD,aAAcmwB,GAAK3rD,EAACw7B,CAAK,CAAA,CAAC,YAAY,EACtC,aAAcmwB,GAAK3rD,EAACw7B,CAAK,CAAA,CAAC,YAAY,EACtC,aAAckwB,GAAO1rD,EAACw7B,CAAK,CAAA,CAAC,YAAY,EACxC,WAAYkwB,GAAO1rD,EAACw7B,CAAK,CAAA,CAAC,UAAU,EACpC,UAASx7B,EAAEmyC,EAAI,EAAG,GAAKnyC,EAAGqqD,EAAG,GAAArqD,EAAIw7B,CAAK,CAAA,CAAC,UACvC,gBAAex7B,EAAEmyC,EAAI,EAAA,CAAA,EAAQwZ,GAAK3rD,EAACw7B,CAAK,CAAA,CAAC,eAAe,EACxD,iBAAgBx7B,EAAEmyC,EAAI,EAAA,CAAA,EAAQyZ,GAAM5rD,EAACw7B,CAAK,CAAA,CAAC,gBAAgB,C,EAiB7D,OAdEx7B,EAAE2uC,EAAK,GAAA,CAAA3uC,EAAKm9C,EAAM,EACZ,CACD,GAAAroC,EACH,OAAM9U,EAAEw7B,CAAK,CAAA,CAAC,OACd,aAAYx7B,EAAEw7B,CAAK,CAAA,CAAC,MACpB,SAAUkwB,GAAO1rD,EAACw7B,CAAK,CAAA,CAAC,QAAQ,EAChC,OAAQkwB,GAAO1rD,EAACw7B,CAAK,CAAA,CAAC,MAAM,EAC5B,MAAOkwB,GAAO1rD,EAACw7B,CAAK,CAAA,CAAC,KAAK,EAC1B,YAAakwB,GAAO1rD,EAACw7B,CAAK,CAAA,CAAC,WAAW,EAClC,GAAAx7B,EAAAmyC,EAAI,EAAG0Z,GAAc,EAAA,CAAA,EACrB,GAAA7rD,EAAAqqD,EAAG,EAAK,CAAA,YAAaqB,GAAO1rD,EAACw7B,CAAK,CAAA,CAAC,WAAW,CAAA,E,IAIhD,CACD,GAAA1mB,EACH,SAAQ9U,EAAEw7B,CAAK,CAAA,CAAC,SAChB,iBAAgBx7B,EAAEmyC,EAAI,EAAG,KAAOuZ,GAAO1rD,EAACw7B,CAAK,CAAA,CAAC,gBAAgB,EAC9D,SAAQx7B,EAAEmyC,EAAI,EAAG,KAAOuZ,GAAO1rD,EAACw7B,CAAK,CAAA,CAAC,QAAQ,EAC9C,YAAWx7B,EAAEmyC,EAAI,EAAG,KAAOuZ,GAAO1rD,EAACw7B,CAAK,CAAA,CAAC,WAAW,EACpD,UAASx7B,EAAEuqD,EAAM,EAAGmB,GAAO1rD,EAACw7B,CAAK,CAAA,CAAC,SAAS,EAAI,KAC/C,SAAQx7B,EAAEmyC,EAAI,EAAG,KAAOuZ,GAAO1rD,EAACw7B,CAAK,CAAA,CAAC,QAAQ,EAC9C,OAAMx7B,EAAEmyC,EAAI,EAAA,CAAA,EAAQwZ,GAAK3rD,EAACw7B,CAAK,CAAA,CAAC,MAAM,EACtC,aAAYx7B,EAAEw7B,CAAK,CAAA,CAAC,aAAa,KAAI,EACrC,OAAQ7lB,GAAM,EACd,OAAM3V,EAAEsqD,EAAI,EAAGoB,GAAO1rD,EAACw7B,CAAK,CAAA,CAAC,MAAM,EAAI,KACvC,QAAOx7B,EAAEsqD,EAAI,EAAGoB,GAAO1rD,EAACw7B,CAAK,CAAA,CAAC,OAAO,EAAI,KACzC,gBAAex7B,EAAEw7B,CAAK,CAAA,CAAC,gBACvB,aAAckwB,GAAO1rD,EAACw7B,CAAK,CAAA,CAAC,YAAY,EACxC,OAAMx7B,EAAEwqD,EAAW,EAAGkB,GAAO1rD,EAACw7B,CAAK,CAAA,CAAC,MAAM,EAAI,KAC9C,MAAKx7B,EAAEwqD,EAAW,EAAGkB,GAAO1rD,EAACw7B,CAAK,CAAA,CAAC,KAAK,EAAI,KAC5C,YAAWx7B,EAAEmyC,EAAI,EAAGuZ,GAAO1rD,EAACw7B,CAAK,CAAA,CAAC,WAAW,EAAI,KACjD,aAAYx7B,EAAEmyC,EAAI,EAAGuZ,GAAO1rD,EAACw7B,CAAK,CAAA,CAAC,YAAY,EAAI,KACnD,YAAWx7B,EAAEqqD,EAAG,EAAGqB,GAAO1rD,EAACw7B,CAAK,CAAA,CAAC,WAAW,EAAI,KAC5C,GAAAx7B,EAAAmyC,EAAI,EAAG0Z,GAAc,EAAO,CAAA,YAAa,KAAM,UAAW,KAAM,gBAAiB,IAAI,C,CAE7F,CAEA,eAAer0C,IAAW,CACxB1I,EAAAsQ,GAAO,EAAI,EAEX,IAAMgH,EAAO,MAAMyJ,GAAS,YAAO5S,EAAA,IACvB,MAAM;;;;IAAQ,CAAI,OAAMjd,EAAEw7B,CAAK,CAAA,CAAC,OAAO,KAAI,CAAA,CAAA,EACrD7gB,EAAE,8BAA8B,CAAA,EAKlC,GAFA7L,EAAAsQ,GAAO,EAAK,EAEV,CAAGgH,EAAM,OAEX,IAAM7S,EAAQ6S,EAAK,iBAEnB,EAAAoV,CAAK,CAAA,CAAC,OAASjoB,EAAM,OACrB,EAAAioB,CAAK,CAAA,CAAC,iBAAmBjoB,EAAM,iBAC/B,EAAAioB,CAAK,CAAA,CAAC,SAAWjoB,EAAM,SACvB,EAAAioB,CAAK,CAAA,CAAC,QAAUjoB,EAAM,QACtB,EAAAioB,CAAK,CAAA,CAAC,YAAcjoB,EAAM,aAAWvT,EAAIw7B,CAAK,CAAA,CAAC,WACjD,CAEA,eAAe+O,IAAe,CAC5Bz7B,EAAAsQ,GAAO,EAAI,EAEX,IAAMgH,EAAO,MAAMyJ,GAAS,YAChB5S,EAAA,IAAA,MAAM;;;;IAAQ,CAAI,YAAayuC,GAAO1rD,EAACw7B,CAAK,CAAA,CAAC,WAAW,EAAG,YAAakwB,GAAO1rD,EAACw7B,CAAK,CAAA,CAAC,WAAW,C,GAC3G7gB,EAAE,iCAAiC,C,EAGrC7L,EAAAsQ,GAAO,EAAK,EAEPgH,IAEL,OAAO,OAAMpmB,EAACw7B,CAAK,EAAEpV,EAAK,gBAAgB,EAC1C,EAAAoV,CAAK,CAAA,CAAC,YAAc,GACtB,CAEA,eAAejkB,IAAO,CACpBzI,EAAAsQ,GAAO,EAAI,EAEX,IAAM2Q,EAAM/vB,EAAG2uC,EAAK,EACd/gC,EAAG5N,EAAGw7B,CAAK,CAAA,CAAC,IAAI,KAAI,EACpB5U,EAAO,MAAMiJ,GAAS,YAAO5S,EAAA,IACvB,MAAM8S,EAASq7B,EAASC,EAAQzvC,GAAS,CAAA,EACnDmU,EACI/vB,EAAAqqD,EAAA,EACE1vC,EAAE,+BAA8B,CAAI,KAAI3a,EAAEw7B,CAAK,CAAA,CAAC,IAAI,CAAA,EACpD7gB,EAAE,0BAAyB,CAAI,KAAI3a,EAAEw7B,CAAK,CAAA,CAAC,IAAI,CAAA,EACjD7gB,EAAE,0BAAyB,CAAI,KAAI3a,EAAEw7B,CAAK,CAAA,CAAC,IAAI,CAAA,CAAA,EAGrD1sB,EAAAsQ,GAAO,EAAK,EAEPwH,IAEDmJ,EAAQrT,EAAO,GAAE,cAAe9O,GAAG,EAClC,MAAMuY,GAAI,EACjB,CAEA,IAAM67B,OAAgB,CACpBlzC,EAAA0sB,EAAQ,KAAK,MAAKx7B,EAACurD,EAAQ,CAAA,EAAA,EAAA,CAC7B,EAEA,eAAev0B,GAAI,EAAU,EAAQ,EAAW,KAAM,EAChD,IAAa,QAAQjQ,CAAQ,IAO7B,MALe8I,GAAS,YAAO5S,EAAA,IACvB,MAAK,6BAA8B+J,EAAQ,oCAAA,CAAwC,IAAGhnB,EAAE85C,CAAQ,CAAA,CAAC,GAAG,CAAA,EAC9G15B,CAAM,GAGE,MAAM+F,GAAI,CACtB,CAEA,IAAMguB,OACJnd,GACE,kBACArc,EAAE,6BAA4B,CAAI,KAAI3a,EAAE85C,CAAQ,CAAA,CAAC,IAAI,CAAA,EACrDn/B,EAAE,4BAA2B,CAAI,KAAI3a,EAAE85C,CAAQ,CAAA,CAAC,IAAI,CAAA,CAAA,EAGlD/iC,OAAgBigB,GAAI,kBAAmBrc,EAAE,6BAA4B,CAAI,KAAI3a,EAAE85C,CAAQ,CAAA,CAAC,IAAI,CAAA,CAAA,EAE5FgS,OACJ90B,GACE,mBACArc,EAAE,iCAAgC,CAAI,KAAI3a,EAAE85C,CAAQ,CAAA,CAAC,IAAI,CAAA,EACzDn/B,EAAE,6BAA4B,CAAI,KAAI3a,EAAE85C,CAAQ,CAAA,CAAC,IAAI,CAAA,CAAA,EAGnDx/B,GAAQ,GAAU,UAAU,WAAW,UAAU7I,CAAK,EAEtDg5C,GAAW1qD,MAAA,CAAAC,EACdmyC,EAAI,GAAA,CAAAnyC,EAAKqqD,EAAG,GAAA,CAAArqD,EAAKwqD,EAAW,IAAAxqD,GAAK2uC,EAAK,IAAI3uC,EAAAgmB,EAAM,CAAA,EAAE,OAAK,CAAK,eAAe,EAAA,CAAG,SAAS,eAAe,EAAQ,EAG3G+lC,GAAQhsD,MACV,CAAAC,EAAGw7B,CAAK,CAAA,EAAE,IAAI,KAAI,GAAA,CAAAx7B,EAAOw7B,CAAK,CAAA,CAAC,KAAK,KAAI,EAAW,GACnDx7B,EAAE2uC,EAAK,GAAA,CAAA3uC,EAAKm9C,EAAM,GAAQn9C,EAAEgmB,EAAM,CAAA,EAAE,MAAI,CAAA,EAAA,CAAQ,MAAO,GAAQhmB,EAAKw7B,CAAK,CAAA,CAAC,MAAM0uB,EAAQ,EAAG,KAAI,CAAA,EAC/FlqD,EAAEmyC,EAAI,EAAQnyC,EAACw7B,CAAK,CAAA,CAAC,YAAY,KAAI,GAAAx7B,EAAMw7B,CAAK,CAAA,CAAC,UAAU,KAAI,GAAAx7B,EAAMw7B,CAAK,CAAA,CAAC,gBAAgB,KAAI,EAC/Fx7B,EAAEqqD,EAAG,EAAQrqD,GAAC2uC,EAAK,GAAA3uC,EAAGw7B,CAAK,CAAA,CAAC,YAAY,KAAI,EAExCx7B,EAACw7B,CAAK,CAAA,CAAC,SAAS,KAAI,GAAAx7B,EAAMw7B,CAAK,CAAA,CAAC,iBAAiB,KAAI,GAAAx7B,EAAMw7B,CAAK,CAAA,CAAC,SAAS,KAAI,CACrF,EAEKtZ,GAAIniB,MAAAC,EACR85C,CAAA,E,CAEMuN,GAAYrnD,EAAC85C,CAAQ,CAAA,CAAC,QAAQ,EAC9B95C,EAAA85C,CAAQ,CAAA,CAAC,WAAa,MAClBn/B,EAAE,uBAAuB,EACzB3a,EAAA85C,CAAQ,CAAA,CAAC,OAAS,WAChBn/B,EAAE,sBAAsB,EACxBA,EAAE,0BAA0B,CAClC,CAAA,CAAA,KAAK,KAAK,EACZ,IAAI,E,4BAyUD,IAAA8C,EAAA1d,MAAAC,EAAAgmB,EAAM,EAAGrL,EAAE,2BAA0B,CAAI,KAAI3a,EAAEgmB,EAAM,CAAA,CAAC,OAASqhC,GAAYrnD,EAACgmB,EAAM,CAAA,CAAC,QAAQ,EAAIhmB,EAAAgmB,EAAM,CAAA,CAAC,I,GAAUrL,EAAE,eAAe,CAAA,E,UAChI,GAAE3a,EAAEgmB,EAAM,EAAG,iBAAmB,aAAc,MAAKhmB,EAAEgmB,EAAM,EAAGrL,EAAE,uBAAuB,EAAIA,EAAE,gBAAgB,C,IAC/GoF,EAAAhgB,MAAAC,EAAAgmB,EAAM,EAAG,KAAOrL,EAAE,uBAAuB,CAAA,EAHhDyT,GAAAlR,EAAA,C,4GAKE4Q,GAAOsnB,EAAA,C,eAAW,OAAAvlB,GAAS,K,uBAGzBlS,GAAOT,EAAA,CAAA,CAAA,C,qCAEC,CAAAvC,EAAE,wBAAwB,EAAA3a,EAAGyrC,EAAK,CAAA,EAAI,CAAA9wB,EAAE,0BAA0B,EAAA3a,EAAGyrD,EAAO,CAAA,C,GAAO,CAAAl9B,EAASpY,KAAOoY,G,+BAAhB,IAAAA,MAAQvuB,EAAA2kC,CAAA,CAAA,CAAA,GAACxuB,MAAKnW,EAAA2kC,CAAA,CAAA,CAAA,G,uBAErG3iB,EAAO9E,EAAA,C,YAAQ,OAAAqR,EAAO,C,mBACpB,IAAAzR,EAAGqsC,GAAA,EAAHj4C,EAAA4L,EAAG,GACK3G,EAAQ,GAAQk0B,EAAO,KAAG,EAAlB,IAAM,C,CACS,IAAA5sB,EAAA1d,MAAA,kBAAAC,EAAAqqC,CAAM,CAAA,CAAC,KAAG,EAArChtB,GAAIH,EAAA,C,6IACF4a,EAAI73B,EAAAgsD,CAAA,EAAJn5B,EAAAp0B,EAAAo5B,EAAI,EAAA,EACJ+I,EAAIpiC,EADJq5B,EAAI,CAAA,EACJmH,EAAAvgC,EAAAmiC,EAAI,EAAA,E,8BAD8B7gC,EAAAqqC,CAAM,CAAA,CAAC,OAASgd,GAAYrnD,EAACqqC,CAAM,CAAA,CAAC,QAAQ,EAAIrqC,EAAAqqC,CAAM,CAAA,CAAC,SAC9DrqC,EAAAqqC,CAAM,CAAA,CAAC,OAAS,GAAKgd,GAAYrnD,EAACqqC,CAAM,CAAA,CAAC,QAAQ,C,qCAJlFr5B,EAAA8L,CAAG,EAAHtP,EAAA0P,EAAAJ,CAAG,C,kCAFH3G,EAAI,CAAA,CAAC,QAAMuI,EAAAslB,CAAA,C,0BAcjB,IAAAxhB,EAAG4mC,GAAA,EAAHnT,EAAAz3C,EAAAgkB,CAAG,EACOynC,EAAKhU,CAAA,E,mBACKyU,EAAMxtC,CAAA,C,UAAnBld,EAAAqqD,EAAG,GAAA3rC,EAAAmnB,CAAA,C,sBACW6E,EAAOxtB,CAAA,C,UAArBld,EAAAmyC,EAAI,GAAAzzB,EAAA4nB,CAAA,C,GAET,IAAA3jB,EAAGlkB,EAAA43C,EAAA,CAAA,EACDz2B,EAAMphB,EADRmkB,CAAG,EACDwc,EAAAzgC,EAAAkhB,EAAM,EAAA,EAGNvC,GAHA5e,EAAAmhB,EAAM,CAGF,EAAA,C,4EAA+C7R,EAAA,GAAAnP,EAAA2gC,EAAA9hB,CAAA,EAAA,KAAA9C,EAAE,kBAAkB,CAAA,CAAA,E,+BAJzE3J,EAAA2R,CAAG,EALL3R,EAAAwR,CAAG,E,MAMC,EAAM,SAAAxiB,EAAwDof,EAAI,GAAA,CAAApf,EAAK+rD,EAAQ,E,aAC7E/rD,EAAAof,EAAI,EAAGzE,EAAE,uBAAuB,EAAIA,EAAE,oBAAoB,C,GAD5DxM,EAAA,QAAAyR,EAA0FrI,EAAI,EANlG/J,EAAA0P,EAAAsF,CAAG,C,UAlBDxiB,EAAA4lB,EAAO,EAAAlH,EAAAshB,CAAA,EAAAhgC,EAEDgmB,EAAM,EAAAhmB,EAePw7B,CAAK,GAAA9c,EAAAynB,EAAA,CAAA,EAfEznB,EAAA+mB,EAAA,CAAA,C,2CA+BlB9nB,GAAOT,EAAA,CAAA,CAAA,C,SAEP,IAAAgG,EAAGmmC,GAAA,EAAH7pB,EAAA9gC,EAAAwkB,EAAG,EAAA,EAA4DnV,EAAA,GAAAnP,EAAA4gC,EAAA/hB,CAAA,EAAA,KAAAoS,GAAS,MAAM,SAAWlV,EAAE,mBAAmB,CAAA,CAAA,EAA9GnN,EAAA0P,EAAAgG,CAAG,C,UAGQ,IAAAwa,EAAK,GAAA,C,CACC,IAAAjgB,EAAA1d,MAAAynD,GAAaxnD,EAAC85C,CAAQ,CAAA,CAAA,EAAnC97B,GAAKd,EAAA,C,6BAF4CO,EAAA1d,OAAA,CAAA,GAAI,aAAc,MAAO4a,EAAE,gBAAgB,CAAA,EAAA,EAAhGyT,GAAIlR,EAAA,C,YAAQ,OAAAld,EAAA85C,CAAQ,CAAA,CAAC,I,WAAU,OAAA95C,EAAA85C,CAAQ,CAAA,CAAC,G,qCAA8D,OAAA95C,EAAAkiB,EAAI,C,EAC/F,Q,mCAIT4L,GAAO0oB,EAAA,C,eAAW,OAAA3mB,GAAS,K,uBAGzB,IAAAzM,EAAGkmC,GAAA,EACDt/B,EAAGxrB,EADL4kB,CAAG,EAECua,EAAMn/B,EADRwrB,CAAG,EACDyV,EAAA/gC,EAAAi/B,EAAM,EAAA,EADR3sB,EAAAgZ,CAAG,EAGH,IAAAK,EAAG5rB,EAHHurB,EAAG,CAAA,EAIDtC,EAAMlpB,EADR6rB,CAAG,EACDsV,EAAAjhC,EAAAgpB,EAAM,EAAA,EADR1W,EAAAqZ,CAAG,EAJLrZ,EAAAoS,CAAG,E,8BAESzI,EAAE,8BAA6B,CAAI,IAAKsG,GAAGjhB,EAAC85C,CAAQ,CAAA,CAAC,UAAU,CAAA,CAAA,MAGZn/B,EAAE,mBAAmB,C,GAAhFxM,EAAA,QAAAuZ,EAAiD3Q,EAAO,EAL5DvJ,EAAA0P,EAAAkG,CAAG,C,QASH,IAAAsP,EAAG62B,GAAA,EACD12B,EAAGr0B,EADLk0B,CAAG,EAECkL,EAAMp/B,EADRq0B,CAAG,EACD+M,EAAAlhC,EAAAk/B,EAAM,EAAA,EACN6D,EAAIhjC,EADJm/B,EAAM,CAAA,EACNiC,EAAAnhC,EAAA+iC,EAAI,EAAA,EAFNzwB,EAAA6hB,CAAG,EADL7hB,EAAA0hB,CAAG,E,8BAES/X,EAAE,8BAA8B,MAClCA,EAAE,sCAAqC,CAAI,KAAI3a,EAAE85C,CAAQ,CAAA,CAAC,IAAI,CAAA,C,GAHxEtsC,EAAA0P,EAAAwV,CAAG,C,EADIyD,EAAAp2B,MAAAwnD,GAAavnD,EAAC85C,CAAQ,CAAA,CAAA,E,QAT3B95C,EAAA85C,CAAQ,CAAA,CAAC,WAAUp7B,EAAAw5B,CAAA,EAAAl4C,EAAAm2B,CAAA,GAAAzX,EAAAg6B,EAAA,CAAA,C,sBAmBrB,IAAA7a,EAAG2rB,GAAA,EACD1rB,EAAGt/B,EADLq/B,CAAG,EAEC2E,EAAIhkC,EADNs/B,CAAG,EACDuC,EAAA7hC,EAAAgkC,CAAI,E,QAEyB,IAAA/kB,EAAA1d,MAAA,kBAAAC,EAAA85C,CAAQ,CAAA,CAAC,aAAa,KAAG,EAApDz8B,GAAIg6B,EAAA,C,qDAAqDtpC,MAAAnP,EAAA2hC,EAAAvgC,EAAA85C,CAAQ,CAAA,CAAC,aAAa,IAAI,CAAA,E,0CAFrF9oC,EAAAwxB,CAAI,EADNxxB,EAAA8sB,CAAG,EADL9sB,EAAA6sB,CAAG,E;c,eAGGljB,EAAE,sCAAsC,MAExCA,EAAE,sCAAsC,C,GAL9CnN,EAAA0P,EAAA2gB,CAAG,C,UADD79B,EAAA85C,CAAQ,CAAA,CAAC,cAAYp7B,EAAAytC,CAAA,C,iBAYC,IAAA1uC,EAAA1d,MAAA,cAAAC,EAAA85C,CAAQ,CAAA,CAAC,KAAG,EAAgCh6B,EAAA/f,MAAA4a,EAAE,uBAAuB,CAAA,EAA/Foe,GAAK2e,EAAA,C,mCAAsC,OAAAhjC,EAAI,C,cAAS,OAAA1U,EAAA67B,EAAK,C,6BAE7D,IAAAkC,EAAGt/B,EAAAi5C,EAAA,CAAA,EAAHG,EAAAr5C,EAAAu/B,CAAG,E,MAES2sB,EAAMxtC,CAAA,C,QAENwtB,EAAOxtB,CAAA,C,QAEf8E,EAAO9E,EAAA,C,iBACLsW,GAAWtW,EAAA,C,uCAAQ,OAAA2S,E,aAAgB,OAAA7vB,EAAAsrD,CAAS,C,EAAY,SAAAnlC,G,gEAGlD8jC,EAAKnS,CAAA,E,oBAGQ,IAAAr6B,EAAA1d,MAAA4a,EAAE,kBAAkB,CAAA,EAASmF,EAAA/f,MAAAC,EAAAqqD,EAAG,EAAG1vC,EAAE,2BAA2B,EAAIA,EAAE,uBAAuB,CAAA,EAAhHqH,EAAO9E,EAAA,C,yEACL,IAAA+gB,EAAGyrB,GAAA,EAAHzR,EAAAz5C,EAAAy/B,CAAG,E,MAEC,IAAAjW,EAAMyhC,GAAA,EAAN3oB,EAAApiC,EAAAspB,EAAM,EAAA,EAAsDja,EAAA,GAAAnP,EAAAkiC,EAAArjB,CAAA,EAAA,KAAA9C,EAAE,oBAAoB,CAAA,CAAA,EAAlFxM,EAAA,QAAA6Z,EAAiD8jC,EAAQ,EAAzDt+C,EAAA0P,EAAA8K,CAAM,C,UADJhoB,EAAAqqD,EAAG,GAAA3rC,EAAA+tC,CAAA,C,GAGP,IAAApkC,EAAM5pB,EAAAw5C,EAAA,CAAA,EAANhX,EAAAviC,EAAA2pB,EAAM,EAAA,EAJRrX,EAAAitB,CAAG,EAIgFlwB,EAAA,GAAAnP,EAAAqiC,EAAAxjB,CAAA,EAAA,KAAA9C,EAAE,mBAAmB,CAAA,CAAA,EAAtGxM,EAAA,QAAAka,EAAuE8rB,EAAO,EAJhF3mC,EAAA0P,EAAA+gB,CAAG,C,mCAFFj+B,EAAA85C,CAAQ,CAAA,CAAC,YAAUp7B,EAAA8tC,CAAA,C,mBAXtB93C,EAAI,IAAK,WAAS,CAAA1U,EAAKqqD,EAAG,EAAA3rC,EAAA0tC,CAAA,EAErB13C,EAAI,IAAK,WAAS,CAAA1U,EAAKmyC,EAAI,EAAAzzB,EAAA2tC,EAAA,CAAA,EAE3B33C,EAAI,IAAK,WAAUgK,EAAA4tC,EAAA,CAAA,EAAA5tC,EAAAmZ,EAAA,EAAA,C,GAL9B7mB,EAAA+sB,CAAG,EAAH,IAAAqa,EAAA35C,EAAAs/B,EAAG,CAAA,E,MA0BD,IAAAG,EAAGyrB,GAAA,EACDjnB,EAAIlkC,EADN0/B,CAAG,EACDiD,EAAAziC,EAAAgkC,EAAI,EAAA,EACJvE,EAAG1/B,EADHikC,EAAI,CAAA,EAEF9Q,EAAMpzB,EADR2/B,CAAG,EACDuD,EAAAhjC,EAAAkzB,EAAM,EAAA,EACNC,EAAMpzB,EADNmzB,EAAM,CAAA,EACNgQ,EAAAljC,EAAAmzB,EAAM,EAAA,EAFR7gB,EAAAmtB,CAAG,EAFLntB,EAAAktB,CAAG,E,cAAHxuB,EAAAwuB,EAAG,aAAAzgB,CAAA,E,cAIC,EAAM,SAAAzd,EAAwDof,EAAI,GAAA,CAAApf,EAAK+rD,EAAQ,E,aAJrCpxC,EAAE,mBAAmB,MAC/BA,EAAE,mBAAmB,MAEgBA,EAAE,mBAAmB,MAExF3a,EAAAof,EAAI,EAAGzE,EAAE,uBAAuB,EAAIA,EAAE,qBAAqB,C,GAF7DxM,EAAA,QAAAyjB,EAA2DowB,EAAO,EAClE7zC,EAAA,QAAA0jB,EAA0Fta,EAAI,EAJlG/J,EAAA0P,EAAAghB,CAAG,C,UADDl+B,EAAAwrD,EAAK,GAAA9sC,EAAAguC,CAAA,C,sDA7GT1sD,EAAA2uC,EAAK,EAAAjwB,EAAA44B,EAAA,EAAAt3C,EAwCA4lB,EAAO,GAAA,CAAA5lB,EAAK85C,CAAQ,EAAAp7B,EAAAy4B,GAAA,CAAA,EAAAn3C,EAEnB85C,CAAQ,EAAAp7B,EAAAwlB,GAAA,EAAA,EAAAxlB,EAAAi5B,GAAA,CAAA,C,cA/WX,C,+9CCneR,SAAA6V,GAAA,EAAA,EAAA,C,QAYE,IAAMpyB,EAAM,gFAENyV,EAAK;;0BAEazV,EAAM;4CACYA,EAAM;;;;;;;IAS1C8O,EAAK,C,CAEP,KAAM,OACN,MAAOvvB,EAAE,0BAA0B,EACnC,KAAMA,EAAE,yBAAyB,EACjC,KAAMA,EAAE,yBAAyB,EACjC,GAAI,iB,GAGJ,KAAM,MACN,MAAOA,EAAE,yBAAyB,EAClC,KAAMA,EAAE,wBAAwB,EAChC,KAAMA,EAAE,wBAAwB,EAChC,GAAI,c,GAIFkV,EAAW5P,GAAc,EAE3BmG,EAAO7kB,EAAO,IAAI,EAClBqkB,EAAUrkB,EAAO,EAAI,EACrB6d,EAAO7d,EAAO,EAAK,EACnB2+C,EAAU3+C,EAAO,IAAI,EACrBi6B,EAAQj6B,EAAO,IAAI,EACnBksD,EAAOjsD,EAAA,CAAA,CAAA,EAELksD,EAAQjsD,MAAAC,EAAY0kB,CAAI,CAAA,EAAE,gBAAc,CAAA,CAAA,EACxCunC,EAAa,GAAIjsD,EAAKgsD,CAAQ,CAAA,CAAC,KAAM,GAAS54C,EAAK,UAAYiB,CAAI,EACnE63C,GAAW,EAAM,KAAUz3C,GAAI,CAAA,EAAA,CAAQ,OAAQ,GAASrB,EAAK,OAAS0L,CAAI,EAEhF,eAAe2F,GAAO,CACpBrX,EAAA8W,EAAU,EAAI,EAEd,IAAM5J,EAAS,MAAM6T,EAAS,YAAO5S,EAAA,IAAW,MAAM4zB,CAAK,CAAA,EAE3D/hC,EAAA8W,EAAU,EAAK,EAEX5J,GAAMlN,EAAEsX,EAAOpK,EAAM,EAAA,CAC3B,CAEAmK,EAAI,EAEJ,SAAS0nC,EAAY,EAAS,CAC5B,OAAO,OAAO,YACZC,EAAQ,OAAO,IAAK,GAAK,CACvBzsB,EAAM,IACNA,EAAM,OAAS,GAAMA,EAAM,UAAYA,EAAM,OAAS,WAAoB,G,GAGhF,CAEA,SAAS3U,EAAI,EAAM,CACjB,IAAMohC,EAAOpsD,EAAGgsD,CAAQ,CAAA,CAAC,KAAM,GAAS54C,EAAK,OAAS0L,CAAI,EAE1D1R,EAAAoxC,EAAU,EAAE,E,EACZ1kB,E,CACE,OACA,QAASsyB,EAAQ,QACjB,IAAK,GACL,KAAM,GACN,QAASF,EAAOlsD,EAAC0kB,CAAI,CAAA,CAAC,OAAQ5F,CAAI,CAAA,CAAE,SAAW,EAC/C,OAAQqtC,EAAYC,CAAO,C,MAE7Bj+B,EAAS,MAAK,CAChB,CAEA,SAASk+B,EAAK,EAAM,CAClB,IAAMD,EAAUH,EAAU53C,CAAI,EAE9B,EAAAylB,CAAK,CAAA,CAAC,QAAUzlB,EAChB,EAAAylB,CAAK,CAAA,CAAC,OAASqyB,EAAYC,CAAO,EAEhCpsD,EAAG85B,CAAK,CAAA,CAAC,MAAG,EAAEA,CAAK,CAAA,CAAC,IAAMzlB,EAAK,QAAQ,KAAM,GAAG,GAChDrU,EAAG85B,CAAK,CAAA,CAAC,OAAI,EAAEA,CAAK,CAAA,CAAC,KAAOsyB,EAAQ,MACxC,CAEA,SAAStN,EAAK,EAAQ,CACpB,IAAMsN,EAAUH,EAAUK,EAAO,OAAO,EAExCl/C,EAAAoxC,EAAU8N,EAAO,IAAG,EAAA,E,EACpBxyB,E,CACE,KAAMwyB,EAAO,KACb,QAASA,EAAO,QAChB,IAAKA,EAAO,IACZ,KAAMA,EAAO,KACb,QAASA,EAAO,QAChB,YAAaA,EAAO,YACpB,OAAQ,OAAO,YACbF,EAAQ,OAAO,IAAK,GAAK,CACvBzsB,EAAM,IACNA,EAAM,OAAS,GAAM2sB,EAAO,SAAS3sB,EAAM,MAAQA,EAAM,SAAW,E,SAI1ExR,EAAS,MAAK,CAChB,CAEA,SAASsB,GAAQ,CACfriB,EAAAoxC,EAAU,IAAI,EACdpxC,EAAA0sB,EAAQ,IAAI,EACZ3L,EAAS,MAAK,CAChB,CAEA,SAASo+B,GAAS,CAChB,IAAMH,EAAUH,EAASjsD,EAAC85B,CAAK,CAAA,CAAC,OAAO,EAEvC,OAAO,OAAO,YACZsyB,EAAQ,OACL,OAAQ,GAAK,EAAOzsB,EAAM,QAAM,CAAA3/B,EAAK85B,CAAK,CAAA,CAAC,OAAO6F,EAAM,KAAG,CAAA,CAC3D,IAAK,GAAK,CACTA,EAAM,IACNA,EAAM,OAAS,UAAY,OAAM3/B,EAAC85B,CAAK,CAAA,CAAC,OAAO6F,EAAM,IAAG,GAAM,KAAO3/B,EAAA85B,CAAK,CAAA,CAAC,OAAO6F,EAAM,I,GAGhG,CAEA,eAAe9pB,GAAO,CACpBzI,EAAAsQ,EAAO,EAAI,EAEX,IAAMuvB,EAAKjtC,EAAGw+C,CAAO,IAAK,GACpBt5B,EAAO,MAAMiJ,EAAS,YAExB8e,EACQ1xB,EAAA,IAAA,M;;;;iB,CAOA,IAAGvb,EAAE85B,CAAK,CAAA,CAAC,IAAI,KAAI,EACnB,QAAO95B,EAAE85B,CAAK,CAAA,CAAC,QACf,KAAI95B,EAAE85B,CAAK,CAAA,CAAC,KAAK,KAAI,EACrB,OAAQyyB,EAAM,EACd,QAAOvsD,EAAE85B,CAAK,CAAA,CAAC,O,GAGfve,EAAA,IAAA,M;;;;iB,CAMA,IAAGvb,EAAE85B,CAAK,CAAA,CAAC,IAAK,KAAI95B,EAAE85B,CAAK,CAAA,CAAC,KAAK,KAAI,EAAI,OAAQyyB,EAAM,EAAI,QAAOvsD,EAAE85B,CAAK,CAAA,CAAC,O,GAE5E7gB,EAARg0B,EAAU,gBAA2C,gBAA5B,CAAI,KAAIjtC,EAAE85B,CAAK,CAAA,CAAC,IAAI,CAA2C,C,EAG1F1sB,EAAAsQ,EAAO,EAAK,EAEPwH,IAELuK,EAAK,EACL,MAAMhL,EAAI,EACZ,CAEA,eAAe6Q,EAAI,EAAU,EAAQ,EAAQ,EAAW,KAAM,EACxD,IAAa,QAAQjQ,CAAQ,IAU7B,MARe8I,EAAS,YAAO5S,EAAA,IAE3B,MAAK,6BAA8B+J,EAAQ,kCAAA,CAC7C,IAAKgnC,EAAO,GAAG,CAAA,EAEnB5tC,CAAM,GAGE,MAAM+F,EAAI,CACtB,CAEA,eAAe+nC,GAAY,EAAQ,CAU7B,MATer+B,EAAS,YAAO5S,EAAA,IAE3B,MAAK,4FAAA,CAEL,IAAK+wC,EAAO,GAAG,CAAA,EAErBrzC,EAAE,yBAAwB,CAAI,KAAMqzC,EAAO,IAAI,CAAA,CAAA,GAGvC,MAAM7nC,EAAI,CACtB,CAEA,eAAegoC,EAAK,EAAQ,CAC1B,IAAM3xC,GAAMixC,EAAQO,EAAO,MAAQ,GAAA,CAAI,KAAI,EAE3C,GAAE,CAAGxxC,EAAI,OAET1N,EAAAsQ,EAAO,EAAI,EAEX,IAAMpD,EAAS,MAAM6T,EAAS,YAAO5S,EAAA,IAC/B,MAAK,kGAAA,CAEL,IAAK+wC,EAAO,IAAK,IAAE,CAAA,CAAA,EAIzBl/C,EAAAsQ,EAAO,EAAK,EAEPpD,IAEDA,EAAO,WAAW,UACpB6T,EAAS,IAAIlV,EAAE,iBAAgB,CAAI,KAAMqzC,EAAO,KAAM,IAAE,CAAA,CAAA,EAExDn+B,EAAS,MAAM7T,EAAO,WAAW,OAAO,EAE5C,CAEA,IAAM+vC,EAAQtqD,MAAqB,CACjC,GAAE,CAAAC,EAAG85B,CAAK,EAAE,MAAO,GAEnB,IAAMsyB,EAAUH,EAASjsD,EAAC85B,CAAK,CAAA,CAAC,OAAO,EAEvC,OAAM95B,EACJ85B,CAAK,CAAA,CAAC,IAAI,KAAI,GAAA95B,EACd85B,CAAK,CAAA,CAAC,KAAK,KAAI,GACfsyB,EAAQ,OAAO,MACZ,GAAK,CACHzsB,EAAM,UACPA,EAAM,OAAS,WACdA,EAAM,QAAM3/B,EAAI85B,CAAK,CAAA,CAAC,aAAa,SAAS6F,EAAM,GAAG,GACtD,OAAM3/B,EAAC85B,CAAK,CAAA,CAAC,OAAO6F,EAAM,MAAQ,EAAE,CAAA,CAAE,KAAI,CAAA,CAGlD,CAAC,EAGF,IAAAvkB,GAAGxb,GAAA,EAAH0b,GAAArb,EAAAmb,EAAG,EACDgR,GAAO9Q,GAAA,C,eAAW,OAAA6S,EAAS,K,yBAGzBlS,GAAOT,EAAA,CAAA,CAAA,C,kCAGU,IAAAO,EAAAhc,MAAAC,EAAAw+C,CAAO,IAAK,GAAKvlC,EAAE,kBAAkB,EAAIA,EAAE,oBAAmB,CAAI,KAAIjZ,EAAE85B,CAAK,CAAA,CAAC,IAAI,CAAA,CAAA,EAAjGxZ,EAAO9E,EAAA,C,kEAEH,IAAAU,EAAKjd,GAAA,EACHkd,EAAIlc,EADNic,CAAK,EACHzL,EAAArQ,EAAA+b,EAAI,EAAA,EACJ4qB,EAAA7mC,EADAic,EAAI,CAAA,EACJ3M,EAAAu3B,EAAA,OAAA/mC,EAKQgsD,CAAQ,CAAA,CAAC,OAAQ,GAAS54C,EAAK,OAAIpT,EAAK85B,CAAK,CAAA,CAAC,IAAI,EAAK,GAASsyB,EAAQ,SAAO,EAAxB,IAAO,CAClE,IAAAnZ,EAAMl0C,GAAA,EAANkf,EAAA7d,EAAA6yC,EAAM,EAAA,E,YAA0B1kC,EAAA0P,EAAAje,EAAAosD,CAAO,CAAA,CAAC,KAAK,EAA/BlZ,KAAA,EAAAlzC,EAAAosD,CAAO,CAAA,CAAC,WAAtB,EAAM,OAAN,EAAM,QAAAlZ,IAAA,G,GAANpnC,EAAA0P,EAAAy3B,CAAM,C,GANV3jC,EAAAy3B,CAAA,E,MAAA74B,EAAA64B,CAAA,EAFFz3B,EAAA4M,CAAK,E,aAIKirB,KAAA,EAAAnnC,EAAA85B,CAAK,CAAA,CAAC,W,EAFd,OAAA,EAAA,QAAAqN,IAAA,GAAA9mC,EAAA0mC,EAAAI,CAAA,E,EAD0B,KAAAluB,EAAE,sBAAsB,CAAA,C,EAClDxM,EAAA,SAAAs6B,EAGY,GAAUslB,EAAKt/C,EAAM,cAAc,KAAK,CAAA,EALtDjB,EAAA0P,EAAAU,CAAK,C,UADHlc,EAAAw+C,CAAO,IAAK,IAAExhC,EAAAgE,CAAA,C,GAelB,IAAAF,EAAG5gB,EAAAkhB,EAAA,CAAA,EAAHE,EAAArhB,EAAA6gB,CAAG,E,CAEO,IAAA/E,EAAAhc,MAAAkZ,EAAE,kBAAkB,CAAA,EAEjBmF,EAAAre,MAAAC,EAAAw+C,CAAO,IAAK,EAAE,EAHzB1yB,EAAAxK,EAAA,C,gHAEC,IAAA,OAAU,CAAE,OAAAthB,EAAA85B,CAAK,CAAA,CAAC,G,EAAlB,IAAA,MAAU,EAAA,CAAE,EAAAA,CAAK,CAAA,CAAC,IAAGnU,C,kBAMT,IAAA5J,EAAAhc,MAAAkZ,EAAE,mBAAmB,CAAA,EAAlC6S,EAAKrK,EAAA,C,yBAAgC,IAAA,OAAU,CAAE,OAAAzhB,EAAA85B,CAAK,CAAA,CAAC,I,EAAlB,IAAA,MAAU,EAAA,CAAE,EAAAA,CAAK,CAAA,CAAC,KAAInU,C,IAT7DrW,EAAAwR,CAAG,EAYH,IAAAG,EAAG/gB,EAZH4gB,EAAG,CAAA,EAYHtR,EAAAyR,EAAG,OACKgrC,EAASjsD,EAAC85B,CAAK,CAAA,CAAC,OAAO,CAAA,CAAE,OAAU,GAAO6F,EAAM,KAAG,EAAhB,IAAK,C,uBAE1C,IAAAne,EAAGriB,GAAA,EAAH8nB,EAAAhnB,EAAAuhB,CAAG,EACD6lB,GAAMpgB,EAAA,C,YAAQ,OAAAjnB,EAAA2/B,CAAK,CAAA,CAAC,K,EAAO,IAAA,SAAY,CAAE,OAAA3/B,EAAA85B,CAAK,CAAA,CAAC,OAAM95B,EAAC2/B,CAAK,CAAA,CAAC,I,EAAjC,IAAA,QAAY,EAAA,CAAE,EAAA7F,CAAK,CAAA,CAAC,OAAM95B,EAAC2/B,CAAK,CAAA,CAAC,KAAGha,C,uBAC/C,IAAAtK,EAACnc,GAAA,EAADif,EAAA/d,EAAAib,EAAC,EAAA,EAAehP,MAAA9L,EAAA4d,EAAAne,EAAA2/B,CAAK,CAAA,CAAC,IAAI,CAAA,EAA1B7zB,EAAA0P,EAAAH,CAAC,C,UAAbrb,EAAA2/B,CAAK,CAAA,CAAC,MAAI3iB,EAAAqE,CAAA,C,GAFhB/R,EAAAkS,CAAG,EAAH1V,EAAA0P,EAAAgG,CAAG,C,QAKH,IAAAsE,EAAK7mB,GAAA,EACH6d,EAAI7c,EADN6lB,CAAK,EACHD,EAAAzlB,EAAA0c,EAAI,EAAA,EACJk2B,EAAM9yC,EADN4c,EAAI,CAAA,EACJtN,EAAAwjC,EAAM,OAAAhzC,EACE2/B,CAAK,CAAA,CAAC,QAAW,GAAQsH,GAAM,EAAd,IAAM,CAC3B,IAAA8M,EAAMh1C,GAAA,EAANgnB,EAAA3lB,EAAA2zC,EAAM,EAAA,E,YAAiBxlC,EAAAwX,EAAAkhB,CAAM,EAAf+M,KAAA,EAAA/M,KAAd,EAAM,OAAN,EAAM,QAAA+M,IAAA,G,GAANloC,EAAA0P,EAAAu4B,CAAM,C,GAFVzkC,EAAA0jC,CAAM,EAAN9kC,EAAA8kC,CAAM,EAFR1jC,EAAAwW,CAAK,EACuBzZ,MAAA9L,EAAAslB,EAAA7lB,EAAA2/B,CAAK,CAAA,CAAC,KAAK,CAAA,EACrCxxB,EAAA6kC,MAAMhzC,EAA6C85B,CAAK,CAAA,CAAC,OAAM95B,EAAC2/B,CAAK,CAAA,CAAC,KAAG,GAAA,EAAtB7F,CAAK,CAAA,CAAC,OAAM95B,EAAC2/B,CAAK,CAAA,CAAC,KAAGha,CAAA,EAF3E7Z,EAAA0P,EAAAsK,CAAK,C,QASL,IAAApE,EAAGtiB,GAAA,EAAHqoB,EAAAxnB,EAAAyhB,CAAG,E,CAEO,IAAA3F,EAAAhc,MAAAC,EAAA2/B,CAAK,CAAA,CAAC,SAAW3/B,EAAA2/B,CAAK,CAAA,CAAC,MAAQ1mB,EAAE,wBAAuB,CAAI,MAAKjZ,EAAE2/B,CAAK,CAAA,CAAC,KAAK,CAAA,CAAA,EAC/EvhB,EAAAre,MAAAC,EAAA2/B,CAAK,CAAA,CAAC,OAAS,WAAa3/B,EAAA2/B,CAAK,CAAA,CAAC,OAAS,UAAY,SAAW,MAAM,EAKjEthB,EAAAte,MAAAC,EAAA2/B,CAAK,CAAA,CAAC,QAAM3/B,EAAI85B,CAAK,CAAA,CAAC,aAAa,SAAQ95B,EAAC2/B,CAAK,CAAA,CAAC,GAAG,EAAI1mB,EAAE,wBAAwB,EAAI,EAAE,EAPvG6S,EAAArE,EAAA,C,4IAGC,IAAA,OAAU,CAAE,OAAAznB,EAAA85B,CAAK,CAAA,CAAC,OAAM95B,EAAC2/B,CAAK,CAAA,CAAC,I,EAA/B,IAAA,MAAU,EAAA,CAAE,EAAA7F,CAAK,CAAA,CAAC,OAAM95B,EAAC2/B,CAAK,CAAA,CAAC,KAAGha,C,uBAMnB,IAAAO,EAAChnB,GAAA,EAAD+mB,EAAA7lB,EAAA8lB,EAAC,EAAA,EAAe7Z,MAAA9L,EAAA0lB,EAAAjmB,EAAA2/B,CAAK,CAAA,CAAC,IAAI,CAAA,EAA1B7zB,EAAA0P,EAAA0K,CAAC,C,UAAblmB,EAAA2/B,CAAK,CAAA,CAAC,MAAI3iB,EAAA8J,CAAA,C,GAVhBxX,EAAAoS,CAAG,EAAH5V,EAAA0P,EAAAkG,CAAG,C,UAfD1hB,EAAA2/B,CAAK,CAAA,CAAC,OAAS,UAAS3iB,EAAAuE,CAAA,EAAAvhB,EAKnB2/B,CAAK,CAAA,CAAC,QAAO3iB,EAAA6D,EAAA,CAAA,EAAA7D,EAAAwF,EAAA,EAAA,C,YAP1BlT,EAAA2R,CAAG,EAAH,IAAAmH,EAAAloB,EAAA+gB,EAAG,CAAA,E,CAiCW,IAAAlF,EAAAhc,MAAAkZ,EAAE,sBAAsB,CAAA,EAAtCouB,GAAMjf,EAAA,C,yBAAmC,IAAA,SAAY,CAAE,OAAApoB,EAAA85B,CAAK,CAAA,CAAC,O,EAApB,IAAA,QAAY,EAAA,CAAE,EAAAA,CAAK,CAAA,CAAC,QAAOnU,C,IAEpE,IAAA2C,EAAGpoB,EAAAkoB,EAAA,CAAA,EACDpK,EAAM/d,EADRqoB,CAAG,EACDnC,EAAA/lB,EAAA4d,EAAM,EAAA,EAGNE,EAAMhe,EAHN8d,EAAM,CAAA,EAGNqI,EAAAjmB,EAAA8d,EAAM,EAAA,EAJR5O,EAAAgZ,CAAG,E,UACD,EAAM,SAAAtoB,EAAwD0d,CAAI,GAAA,CAAA1d,EAAKqqD,CAAQ,E,oBAC7ErqD,EAAAw+C,CAAO,IAAK,GAAKvlC,EAAE,qBAAqB,EAAIA,EAAE,mBAAmB,MAEAA,EAAE,qBAAqB,C,GAH1FxM,EAAA,QAAAuR,EAA0FnI,CAAI,EAG9FpJ,EAAA,QAAAyR,EAA2DuR,CAAK,E,yCApElEzvB,EAAA85B,CAAK,GAAA9c,EAAA0K,CAAA,C,gBAyEHlY,EAAAiZ,EAAA,OAAA+f,EAAS,GAAOzY,EAAM,MAAI,EAAjB,IAAK,CACX,IAAA3c,EAAIrT,MAAGmsD,EAAOlsD,EAAC0kB,CAAI,CAAA,CAAC,OAAM1kB,EAAE+vB,CAAK,CAAA,CAAC,IAAI,CAAA,E,CAGlC,IAAArK,EAAO,GAAA,CACd,IAAAM,EAAM1mB,GAAA,EAANinB,EAAAnmB,EAAA4lB,EAAM,EAAA,EAAmE3Z,EAAA,GAAA9L,EAAAgmB,EAAAxK,CAAA,EAAA,KAAA9C,EAAE,kBAAkB,CAAA,CAAA,EAA7FxM,EAAA,QAAAuZ,MAAuDgF,EAAGhrB,EAAC+vB,CAAK,CAAA,CAAC,IAAI,CAAA,EAArEjkB,EAAA0P,EAAAwK,CAAM,C,EAFwBjK,EAAAhc,MAAAC,EAAAoT,CAAI,CAAA,CAAC,OAAMpT,EAAG+vB,CAAK,CAAA,CAAC,KAAI/vB,EAAG+vB,CAAK,CAAA,CAAC,IAAI,EAAvEzP,EAAO9E,EAAA,C,YAAQ,OAAAxb,EAAA+vB,CAAK,CAAA,CAAC,K,0BACV,U,kCAIHvgB,EAAAsZ,EAAA,OAAA9oB,EAAAoT,CAAI,EAAI,GAAQk5C,EAAO,KAAG,EAAlB,IAAM,CAClB,IAAA3jC,EAAGlpB,GAAA,EACDuxB,EAAG/wB,EADL0oB,CAAG,EAECwI,EAAGlxB,EADL+wB,CAAG,EAECrJ,EAAI1nB,EADNkxB,CAAG,EACDzK,EAAAzmB,EAAA0nB,CAAI,E,aAEkB,IAAAG,EAAIvoB,GAAA,EAAJqnB,EAAAxmB,EAAA0nB,EAAI,EAAA,EAAuCzb,EAAA,GAAA9L,EAAAqmB,EAAA7K,CAAA,EAAA,KAAA9C,EAAE,sBAAsB,CAAA,CAAA,EAAnEnN,EAAA0P,EAAAsM,CAAI,C,UAApB9nB,EAAAssD,CAAM,CAAA,CAAC,SAAOtvC,EAAA6K,CAAA,C,GAFpBvY,EAAAqY,CAAI,EAIJ,IAAAO,EAAIhoB,EAJJynB,EAAI,CAAA,EAIJd,EAAA5mB,EAAAioB,CAAI,EACec,EAAI9oB,EAAA2mB,CAAA,EAAJU,EAAAnnB,EAAA4oB,EAAI,EAAA,EAAJxB,EAAAtnB,EAAA8oB,CAAI,EADvB1Z,EAAA4Y,CAAI,EALN5Y,EAAA6hB,CAAG,EAUH,IAAAgL,EAAGj8B,EAVHixB,EAAG,CAAA,EAUHb,EAAArwB,EAAAk8B,CAAG,E,MAEC,IAAA7V,EAAM9mB,GAAA,EAANooB,EAAAxnB,EAAAkmB,EAAM,EAAA,EACJja,EAAA,GAAA9L,EAAAqnB,EAAA7L,CAAA,EAAA,KAAA9C,EAAE,2BAA2B,CAAA,CAAA,EAD/BxM,EAAA,QAAA6Z,MAAiEkmC,GAAWxsD,EAACssD,CAAM,CAAA,CAAA,EAAnFxgD,EAAA0P,EAAA8K,CAAM,C,UADHtmB,EAAAssD,CAAM,CAAA,CAAC,SAAOtvC,EAAAiL,CAAA,C,GAKnB,IAAAtB,EAAMzmB,EAAAowB,EAAA,CAAA,EAANvI,EAAA3nB,EAAAumB,EAAM,EAAA,EACNuJ,EAAAhwB,EADAymB,EAAM,CAAA,EACNwB,EAAA/nB,EAAA8vB,EAAA,EAAA,EAPF5gB,EAAA6sB,CAAG,EAXL7sB,EAAA0hB,CAAG,EAAH,IAAAR,EAAAtwB,EAAA8wB,EAAG,CAAA,E,CAmCK,IAAAjV,EAAAhc,MAAAkZ,EAAE,sBAAsB,CAAA,EAGzBmF,EAAAre,MAAAkZ,EAAE,mBAAmB,CAAA,EAJ5B6S,EAAA0E,EAAA,C,2CAGc,OAAAxwB,EAAA+vB,CAAK,CAAA,CAAC,E,0BAEL,WAAA08B,EAAIzsD,EAACssD,CAAM,CAAA,EAHzB,IAAA,OAAU,CAAE,OAAAP,EAAO/rD,EAACssD,CAAM,CAAA,CAAC,I,EAA3B,IAAA,MAAU,EAAA,CAAE,EAAOtsD,EAACssD,CAAM,CAAA,CAAC,KAAG3mC,C,IArCjCrW,EAAAqZ,CAAG,E,YAIKpa,EAAAmY,EAAA,GAAA1mB,EAAAssD,CAAM,CAAA,CAAC,MAAI,GAAA,EAAA,EAIX/9C,EAAAsY,EAAA,GAAA7mB,EAAAssD,CAAM,CAAA,CAAC,OAAK,GAAA,IAAA,EAA6B/9C,EAAAgZ,EAAAvnB,EAAAssD,CAAM,CAAA,CAAC,GAAG,E,uCAAYrzC,EAAE,qBAAoB,CAAI,IAAKsG,GAAGvf,EAACssD,CAAM,CAAA,CAAC,SAAS,CAAA,CAAA,MAU9CrzC,EAAE,mBAAmB,MAYzFA,EAAE,sBAAsB,C,GAZ1BxM,EAAA,QAAAka,MAAuDm4B,EAAI9+C,EAACssD,CAAM,CAAA,CAAA,EAClE7/C,EAAA,QAAAyjB,MAIGoF,EACE,gBAAet1B,EACfssD,CAAM,EACNrzC,EAAE,0BAAyB,CAAI,KAAIjZ,EAAEssD,CAAM,CAAA,CAAC,IAAI,CAAA,EAChDrzC,EAAE,0BAAyB,CAAI,KAAIjZ,EAAEssD,CAAM,CAAA,CAAC,IAAI,CAAA,CAAA,CAAA,EA3B3DxgD,EAAA0P,EAAAmN,CAAG,C,oEAgDQ,IAAA5M,EAAAhc,MAAAkZ,EAAE,wBAAwB,CAAA,EAAzCqH,EAAO9E,EAAA,C,2DACChM,EAAAqhB,EAAA,OAAA7wB,EAAA0kB,CAAI,CAAA,CAAC,SAAY,GAAQ4nC,EAAO,KAAG,EAAlB,IAAM,CAC3B,IAAAlwB,EAAG18B,GAAA,EACDyyB,EAAIlyB,EADNm8B,CAAG,EACD7T,EAAAtoB,EAAAkyB,CAAI,EACYC,EAAIlyB,EAAAqoB,CAAA,EAAJM,EAAAzoB,EAAAgyB,CAAI,EADpB9iB,EAAA6iB,CAAI,EAGJ,IAAAhC,EAAAjwB,EAHAiyB,EAAI,CAAA,EAGJpJ,EAAA3oB,EAAA+vB,EAAA,EAAA,EAJF7gB,EAAA8sB,CAAG,E,MAEC7tB,EAAAga,EAAA,GAAAvoB,EAAAssD,CAAM,CAAA,CAAC,MAAI,GAAA,EAAA,EAAsB/9C,EAAAsa,EAAA,GAAA7oB,EAAAssD,CAAM,CAAA,CAAC,OAAK,GAAA,KAAAtsD,EAAKssD,CAAM,CAAA,CAAC,MAAI,IAAA,E,QAO7D,KAAArzC,EAAE,0BAA0B,CAAA,C,EAL9BxM,EAAA,QAAA0jB,MAGgBmF,EAAI,gBAAet1B,EAAEssD,CAAM,EAAErzC,EAAE,mBAAkB,CAAI,KAAIjZ,EAAEssD,CAAM,CAAA,CAAC,IAAI,CAAA,CAAA,CAAA,EAPxFxgD,EAAA0P,EAAA4gB,CAAG,C,4CAHLp8B,EAAA0kB,CAAI,CAAA,CAAC,SAAS,QAAM1H,EAAAqL,CAAA,C,mBApItBroB,EAAAkkB,CAAO,GAAA,CAAAlkB,EAAK0kB,CAAI,EAAA1H,EAAAP,EAAA,EAAAzc,EAEX0kB,CAAI,GAAA1H,EAAA0L,GAAA,CAAA,C,GALfpZ,EAAA8L,EAAG,EAAHtP,EAAA0P,EAAAJ,EAAG,E,GAFI,C,8gBC3PR,SAAAwxC,GAAA,EAAA,EAAA,C,QASE,IAMMz+B,EAAW5P,GAAc,EAE3BjH,EAAU1W,EAAMC,EAACsM,MAAOoO,EAAA,SAAgB,OAAO,GAAK,EAAE,CAAA,EACtDsxC,EAAUjsD,EAAMC,EAACsM,MAAOoO,EAAA,SAAgB,OAAO,GAAK,EAAE,CAAA,EACtDmC,EAAO9c,EAAO,EAAK,EAEjBksD,EAAShsD,MAAAya,EAAA,SAAqB,OAAS,WAAW,EAClDkgC,EAAM36C,MAAY,GAAOya,EAAA,SAAU,SAAOA,EAAA,SAAa,QAAO,EAC9DwxC,EAAKjsD,MAAAya,EAAA,SAAqB,aAAa,IAAK,GAAI,KAAUlH,EAAI,GAAA,CAAA,CAAM,KAAK,IAAI,CAAA,EAEnF,eAAewB,EAAK,EAAQ,GAAO,CACjCzI,EAAAsQ,EAAO,EAAI,EAEX,IAAMwH,EAAO,MAAMiJ,EAAS,YAEpB5S,EAAA,IAAA,MAAM;;;;IAAM,CACd,KAAIA,EAAA,SAAW,KACf,QAASmtB,GAAK3nC,EAAI+rD,CAAS,EAAG,GAAE/rD,EAAGuW,CAAO,EAC1C,QAASoxB,EAAQ,GAAE3nC,EAAG8rD,CAAO,C,GAEzB5zC,EAARyvB,EAAU,sBAAsC,sBAAjB,CAAI,MAAKntB,EAAA,KAAA,CAAsC,C,EAGhFnO,EAAAsQ,EAAO,EAAK,EAERwH,GAAI3J,EAAA,UAAA,CACV,CAGD,IAAA6X,EAAOzyB,GAAA,EACLmiC,EAAO9hC,EADToyB,CAAO,EACL3iB,EAAAxP,EAAA6hC,CAAO,EAIP5pB,EAAAhY,EAJA4hC,EAAO,CAAA,EAIPxnB,EAAAta,EAAAkY,CAAA,EAOEkT,GAAO9Q,EAAA,C,eAAW,OAAA6S,EAAS,K,wBAIjB,IAAApS,EAAAjb,MAAAmY,EAAE,uBAAuB,CAAA,EAGnBmF,EAAAtd,MAAAmY,EAAE,mCAAmC,CAAA,EAJnD6S,EAAAtQ,EAAA,C,wEAEC,IAAA,OAAU,CAAE,OAAAza,EAAAuW,CAAO,C,EAAnB,IAAA,MAAU,EAAA,CAAElK,EAAAkK,EAAOqO,EAAA,EAAA,C,cAHjB5kB,EAAA+rD,CAAS,GAAA9vC,EAAAP,CAAA,C,GASd,IAAAP,EAAKhb,EAAA6f,EAAA,CAAA,EACH5E,EAAInb,EADNkb,CAAK,EACH+B,EAAAhd,EAAAkb,EAAI,EAAA,EACJyT,EAAA1uB,EADAib,EAAI,CAAA,EACJnN,GAAA4gB,CAAA,EAOA,IAAA9S,EAAI5b,EAPJ0uB,EAAA,CAAA,EAOAzR,EAAAnd,EAAA8b,CAAI,E,wBAEczQ,EAAA,GAAAjL,EAAAykB,EAAA9J,CAAA,EAAA,KAAA9C,EAAE,yBAAyB,CAAA,CAAA,E,gBAAtClY,EAAA+rD,CAAS,GAAA9vC,EAAAgE,EAAA,C,GAFhB1R,EAAAwN,CAAI,EATNxN,EAAA4M,CAAK,EAeL,IAAAd,EAAGla,EAfHgb,EAAK,CAAA,EAgBH8B,EAAMhd,EADRoa,CAAG,EACD2K,GAAA9kB,EAAA+c,EAAM,EAAA,EAANoD,GAAAlgB,EAAA8c,EAAM,CAAA,E,MAEJ,IAAAE,EAAMzd,GAAA,EAANwlB,EAAAhlB,EAAAid,EAAM,EAAA,E,MAAN,EAAM,SAAAnd,EAAsD2c,CAAI,E,QAC9D,KAAAzE,EAAE,2BAA2B,CAAA,C,EAD/BxM,EAAA,QAAAyR,MAAiFrI,EAAK,EAAI,CAAA,EAA1F/J,EAAA0P,EAAA0C,CAAM,C,WADJnd,EAAA06C,CAAM,GAAAz+B,EAAAqE,CAAA,C,GAFZ/R,EAAA8L,CAAG,EAjCL9L,EAAA4J,CAAA,EALF5J,EAAA8jB,CAAO,E,kBAAP,EAAO,KAAAryB,EAA6B06C,CAAM,GAAI,IAAA,G,+BAyBxCztC,EAAA4hB,EAAA,cAAAtR,CAAA,E,iBAcA,EAAM,SAAAvd,EAAwD2c,CAAI,E,cArCpEzE,EAAClY,EAAC+rD,CAAS,EAAG,0BAA4B,wBAAwB,MAAG/rD,EAAA06C,CAAM,EAAGxiC,EAAE,0BAA0B,EAAI,OAsBlFA,EAAClY,EAAC+rD,CAAS,EAAG,wBAA0B,uBAAuB,MAK3E7zC,EAAClY,EAAC+rD,CAAS,EAAG,oCAAsC,mCAAmC,MAInG7zC,EAAE,qBAAoB,CAAI,MAAKlY,EAALgsD,CAAK,CAAA,CAAA,MAMoC9zC,EAAE,oBAAoB,C,GAlC/FlM,EAAA,SAAAmM,EAEY,GAAU,CACnBnM,EAAM,eAAc,EACpB8I,EAAI,CACN,CAAC,EAeErH,EAAAohB,MAAA7uB,EAKa8rD,CAAO,EAAA,GAAAxrD,EAAPwrD,EAAOlnC,CAAA,CAAA,EA9B1B7Z,EAAA0P,EAAA4X,CAAO,E,GAFA,C,27BC1CR,SAAAq6B,GAAA,EAAA,EAAA,C,QAQE,IAQMC,EAAM,CAAI,UAAW,SAAU,UAAW,QAAQ,EAElDC,EAAa,GAASzhD,IAAQ,0BAA4B,aAAeA,EAE3E4L,EAAS7V,EAAO,EAAE,EAClB2rD,EAAU3rD,EAAO,CAAC,EAClBqiB,EAASriB,EAAO,IAAI,EACpB4rD,EAAU5rD,EAAO,MAAM,EAE3B,SAAS6rD,EAAI,EAAO,CAClB,IAAMC,EAAQhhD,EAAM,cAEpB,EAAM,MAAM,OAAM,GAAMghD,EAAM,gBAAgB,gBAAgB,aAAY,GAC5E,CAGD,IAAA3yC,EAAGpZ,GAAA,EAAHsZ,EAAApZ,EAAAkZ,CAAG,EACOlP,EAAAoP,MAAA,GAAAnZ,EAAA2V,CAAM,EAAA,GAAA3V,EAAIyrD,CAAO,IAAA,GAAA,CACvBzL,GAAM3mC,EAAA,CAAiB,SAAAD,EAAA,IAAA,MAAM;;;;;;IAAQ,CAAI,OAAMpZ,EAAE2V,CAAM,GAAI,IAAI,CAAA,EACpD,UAAQ,EAAC,EAAI1V,IAAA,CACb,IAAA4rD,EAAQ3rD,MAAGqiB,EAAI,CAAA,CAAC,YAAY,EAC5BqG,EAAK1oB,MAAAF,EAAG6rD,CAAQ,CAAA,CAAC,KAAM,GAAYC,EAAQ,MAAG9rD,EAAKmiB,CAAM,CAAA,GAAAniB,EAAK6rD,CAAQ,CAAA,CAAC,EAAC,EACxEE,EAAS7rD,MAAG,OAAO,YAAYqiB,EAAI,CAAA,CAAC,cAAc,IAAK,GAAQ,CAAMvS,EAAS,KAAMA,CAAQ,CAAA,CAAA,CAAA,EAC5FA,EAAQ9P,MAAAF,EAAG+rD,CAAS,CAAA,CAACP,EAASxrD,EAAC4oB,CAAK,CAAA,CAAC,GAAG,EAAA,EAE/C,IAAAjK,EAAG/e,GAAA,EACDkf,EAAG/e,EADL4e,CAAG,EAECimB,EAAA7kC,EADF+e,CAAG,EACDzR,EAAAu3B,EAAA,OAMQ2mB,EAAU,GAASS,GAAO,EAAhB,IAAO,CACd,IAAAjW,EAAO71C,MAAAF,EAAG6rD,CAAQ,CAAA,CAAC,OAAQ,GAAYC,EAAQ,UAAYE,CAAO,CAAA,E,uBAGvE,IAAAC,EAAQ3sD,GAAA,EAAR+N,EAAA4+C,EAAQ,OAAAjsD,EACA+1C,CAAO,EAAI,GAAS+V,EAAQ,KAAG,EAApB,IAAO,CACtB,IAAAhnB,EAAM1lC,GAAA,EAANkP,EAAAjO,EAAAykC,EAAM,EAAA,E,YAAsB14B,EAAAkC,EAAAtO,EAAA8rD,CAAO,CAAA,CAAC,IAAI,EAA1B/mB,KAAA,EAAA/kC,EAAA8rD,CAAO,CAAA,CAAC,OAAtB,EAAM,OAAN,EAAM,QAAA/mB,IAAA,G,GAANp7B,EAAA0P,EAAAyrB,CAAM,C,GAFV33B,EAAA8+C,CAAQ,EAAR/hD,EAAA,GAAA5J,EAAA2rD,EAAQ,QAAAryC,CAAA,EAAA,KAAQ9C,EAAC,iBAAkBk1C,EAAO,OAAA,CAAA,CAAA,EAA1CriD,EAAA0P,EAAA4yC,CAAQ,C,UADNjsD,EAAA+1C,CAAO,CAAA,CAAC,QAAMl7B,EAAAP,CAAA,C,YATtBnN,EAAAy3B,CAAA,E,MAAA74B,EAAA64B,CAAA,EAAA,IAAA5lB,EAAAze,EAAAqkC,EAAA,CAAA,E,MAoBE,IAAAiM,EAAAtxC,GAAA,EAMEuxC,EAAM/wC,EANR8wC,CAAA,EAME/0B,EAAAzb,EAAAywC,EAAM,EAAA,EAAN,EAAM,MAAN,EAAM,QAAA,GAAN,IAAA7xB,EAAA1e,EAAAuwC,CAAM,EACAzjC,EAAA4R,EAAA,OAAAsD,EAAI,CAAA,CAAC,QAAW,GAAMlV,EAAK,UAAQ,EAAnB,IAAI,CACxB,IAAAukC,EAAMxyC,GAAA,EAAN4c,EAAA3b,EAAAuxC,EAAM,EAAA,E,kBAAQC,KAAA,EAAA7xC,EAAAqN,CAAI,CAAA,CAAC,YAAnB,EAAM,OAAN,EAAM,QAAAwkC,IAAA,G,OAAwB7xC,EAAAqN,CAAI,CAAA,CAAC,WAAarN,EAAAqN,CAAI,CAAA,CAAC,KAAOyJ,EAAE,sBAAqB,CAAI,KAAI9W,EAAEqN,CAAI,CAAA,CAAC,IAAI,CAAA,C,GAAtG1D,EAAA0P,EAAAu4B,CAAM,C,GARVzkC,EAAA0jC,CAAA,E,MAAA9kC,EAAA8kC,CAAA,E,UAAAhlC,EAAAglC,EAAA,aAAAj3B,CAAA,E,OAGQo3B,KAAA,EAAAhxC,EAAA2V,CAAM,K,EAHd,OAAA,EAAA,QAAAq7B,IAAA,GAAAxwC,EAAAqwC,EAAAG,CAAA,E,EAEa,KAAAl6B,EAAE,YAAY,MAIRA,EAAE,eAAe,CAAA,C,EANpCxM,EAAA,SAAAumC,EAIY,GAAKpwC,EAAMkV,EAAS/K,EAAM,cAAc,MAAK,EAAA,CAAA,EAJzDjB,EAAA0P,EAAAw3B,CAAA,C,UADE7wC,EAAA4oB,CAAK,CAAA,CAAC,UAAY,WAAS/N,EAAAgE,CAAA,C,GApBjC1R,EAAA2R,CAAG,EAmCH,IAAAlD,EAAGrb,EAnCHue,EAAG,CAAA,EAmCHzR,EAAAuO,EAAG,OACK2vC,EAAU,GAASS,GAAO,EAAhB,IAAO,CACd,IAAAjW,EAAO71C,MAAAF,EAAG6rD,CAAQ,CAAA,CAAC,OAAQ,GAAYC,EAAQ,UAAYE,CAAO,CAAA,E,uBAGvE,IAAA3sC,EAAG5f,GAAA,EACD8f,EAAGxf,EADLsf,CAAG,EAECrF,EAAIja,EADNwf,CAAG,EACDmE,EAAArjB,EAAA2Z,EAAI,EAAA,EAAJsF,EAAA/e,EAAAyZ,EAAI,CAAA,E,CACM,IAAAJ,EAAA1Z,MAAA4W,EAAC,iBAAkBk1C,EAAO,MAAA,CAAA,EAAiB/vC,EAAA/b,MAAA4W,EAAC,iBAAkBk1C,EAAO,OAAA,CAAA,EAA/EpuC,GAAG0B,EAAA,C,mDAFLnS,EAAAoS,CAAG,EAAH,IAAAC,EAAAjf,EAAAgf,EAAG,CAAA,E,MAMD,IAAAmyB,EAAAnyC,GAAA,EAMEwzC,EAAMhzC,EANR2xC,CAAA,EAME9tB,EAAAvjB,EAAA0yC,EAAM,EAAA,EAAN,EAAM,MAAN,EAAM,QAAA,GAAN,IAAAjuB,EAAAvkB,EAAAwyC,CAAM,EACA1lC,EAAAyX,EAAA,OAAAvC,EAAI,CAAA,CAAC,QAAW,GAAMlV,EAAK,UAAQ,EAAnB,IAAI,CACxB,IAAA4lC,EAAM7zC,GAAA,EAAN0kB,EAAAzjB,EAAA4yC,EAAM,EAAA,E,kBAAQC,KAAA,EAAAlzC,EAAAqN,CAAI,CAAA,CAAC,YAAnB,EAAM,OAAN,EAAM,QAAA6lC,IAAA,G,OAAwBlzC,EAAAqN,CAAI,CAAA,CAAC,WAAarN,EAAAqN,CAAI,CAAA,CAAC,KAAOyJ,EAAE,sBAAqB,CAAI,KAAI9W,EAAEqN,CAAI,CAAA,CAAC,IAAI,CAAA,C,GAAtG1D,EAAA0P,EAAA45B,CAAM,C,GARV9lC,EAAAukC,CAAA,E,MAAA3lC,EAAA2lC,CAAA,E,UAAA7lC,EAAA6lC,EAAA,aAAA93B,CAAA,E,OAGQk4B,KAAA,EAAA9xC,EAAA2V,CAAM,K,EAHd,OAAA,EAAA,QAAAm8B,IAAA,GAAAtxC,EAAAkxC,EAAAI,CAAA,E,EAEa,KAAAh7B,EAAE,YAAY,MAIRA,EAAE,eAAe,CAAA,C,EANpCxM,EAAA,SAAAonC,EAIY,GAAKjxC,EAAMkV,EAAS/K,EAAM,cAAc,MAAK,EAAA,CAAA,EAJzDjB,EAAA0P,EAAAq4B,CAAA,C,UADEsa,IAAY,WAASnxC,EAAAqE,CAAA,C,gBAcnB7R,EAAA8X,EAAA,OAAAnlB,EAAA+1C,CAAO,EAAI,GAAS+V,EAAQ,KAAG,EAApB,IAAO,CACtB,IAAAjwC,EAAArc,GAAA,EAAAwkB,EAAA3jB,EAAAwb,EAAA,EAAA,E,OAAAhQ,EAAAgQ,EAAA,eAAA7b,EAGe8rD,CAAO,CAAA,CAAC,MAAG9rD,EAAK4oB,CAAK,CAAA,CAAC,IAAM,OAAS,IAAA,EAAS,EAG3Dxc,EAAA4X,EAAAhkB,EAAA8rD,CAAO,CAAA,CAAC,IAAI,C,GANdxhD,EAAA,QAAAuR,MAAApb,EAIiB0hB,EAAMniB,EAAG8rD,CAAO,CAAA,CAAC,IAAG,EAAA,CAAA,EAJrCniD,EAAA0P,EAAAwC,CAAA,C,GArBJ1O,EAAAkS,CAAG,EAEoBnV,EAAA,GAAAxJ,EAAAgjB,EAAA9J,CAAA,EAAA,KAAA9C,EAAC,iBAAkBk1C,EAAO,OAAA,CAAA,CAAA,EAFjDriD,EAAA0P,EAAAgG,CAAG,C,UADDrf,EAAA+1C,CAAO,CAAA,CAAC,QAAMl7B,EAAAuE,CAAA,C,YAJtBjS,EAAAyO,CAAG,EAwCH,IAAAswC,EAAO3rD,EAxCPqb,EAAG,CAAA,EAyCDlN,EAAM3O,EADRmsD,CAAO,EAEH/lC,GAAGpmB,EADL2O,CAAM,EAEFqQ,EAAEhf,EADJomB,EAAG,EACDjC,EAAA7jB,EAAA0e,EAAE,EAAA,EACF7F,GAAC3Y,EADDwe,EAAE,CAAA,EACFqF,GAAA/jB,EAAA6Y,GAAC,EAAA,EAFH/L,EAAAgZ,EAAG,EAWH,IAAAK,EAAGjmB,EAXH4lB,GAAG,CAAA,EAYDpK,EAAMhc,EADRymB,CAAG,EACDjC,GAAAlkB,EAAA0b,EAAM,EAAA,EACN8H,GAAMtjB,EADNwb,EAAM,CAAA,EACN0I,EAAApkB,EAAAwjB,GAAM,EAAA,EAFR1W,EAAAqZ,CAAG,EAZLrZ,EAAAuB,CAAM,EAkBN,IAAAmgB,GAAGtuB,EAlBHmO,EAAM,CAAA,EAkBN4W,EAAAvlB,EAAA8uB,EAAG,E,wBAEM9kB,EAAA8b,MAAA7lB,EAAAgQ,CAAQ,CAAA,CAAC,KAAI,GAAA,CAChBy6C,GAAYpxC,EAAA,C,uCAAiB,OAAArZ,EAAAgQ,CAAQ,C,cAAS,OAAAhQ,EAAA4oB,CAAK,CAAA,CAAC,I,EAAqB,YAAAjoB,EAAA8qD,CAAO,C,qBAFhFzrD,EAAAgQ,CAAQ,GAAA6K,EAAA6D,EAAA,C,kBAM6C,IAAA9E,EAAA1Z,MAAA4W,EAAE,kBAAkB,CAAA,EAA7E2zC,GAAYxkC,GAAA,C,uCAAiB,OAAAjmB,EAAA+rD,CAAS,CAAA,CAAC,S,2BAAwD,YAAAprD,EAAA8qD,CAAO,C,GAPxGt+C,EAAA0hB,EAAG,EAAH,IAAAvI,GAAA/lB,EAAAsuB,GAAG,CAAA,E,OAWD,IAAAs9B,EAAAzsD,GAAA,E,OAAAmM,EAAAsgD,EAAA,QAAAnsD,EAEQ4oB,CAAK,CAAA,CAAC,OAAO,EAFrB/c,EAAAsgD,EAAA,SAAAnsD,EAIS4oB,CAAK,CAAA,CAAC,IAAI,C,GAJnBhe,EAAA,OAAAuhD,EAKSR,CAAG,EALZp+C,GAAA4+C,CAAA,EAAAxiD,EAAA0P,EAAA8yC,CAAA,C,SAQA,IAAAC,EAAGzsD,GAAA,EAAH+kB,EAAArkB,EAAA+rD,EAAG,EAAA,EAAoBliD,MAAAxJ,EAAAgkB,EAAA1kB,EAAA4oB,CAAK,CAAA,CAAC,MAAQ,EAAE,CAAA,EAAvCjf,EAAA0P,EAAA+yC,CAAG,C,WATDpsD,EAAA0rD,CAAO,IAAK,QAAM1rD,EAAI4oB,CAAK,CAAA,CAAC,KAAI/N,EAAA8J,EAAA,EAAA9J,EAAAwF,GAAA,EAAA,C,GA7BtClT,EAAA++C,CAAO,EA5ET/+C,EAAAwR,CAAG,E,kBAEC9S,EAAA+4B,EAAA,aAAAhrB,CAAA,EAGQorB,KAAA,EAAAhlC,EAAA4oB,CAAK,CAAA,CAAC,O,EAHd,OAAA,EAAA,QAAAoc,IAAA,GAAAxkC,EAAAokC,EAAAI,CAAA,GAkCFn5B,EAAA+P,EAAG,aAAAK,CAAA,EA2C4B7P,EAAA8X,EAAAlkB,EAAA4oB,CAAK,CAAA,CAAC,OAAO,E,QAUxC/c,EAAA2a,EAAG,aAAArK,CAAA,EACDtQ,EAAAkQ,EAAM,eAAA/b,EAA6B0rD,CAAO,IAAK,MAAM,E,QACrD7/C,EAAAgY,GAAM,eAAA7jB,EAA6B0rD,CAAO,IAAK,MAAM,E,aAvF5C50C,EAAE,aAAa,MAgCIA,EAAE,aAAa,MA6CzCA,EAAE,gBAAe,CAChB,QAAO9W,EAAE4oB,CAAK,CAAA,CAAC,QACf,KAAI5oB,EAAE4oB,CAAK,CAAA,CAAC,MAAQ9R,EAAE,kBAAkB,EACxC,GAAE9W,EAAE4oB,CAAK,CAAA,CAAC,E,OAK4B9R,EAAE,aAAa,MACmCA,EAAE,aAAa,MACfA,EAAE,aAAa,C,GAzF9GxM,EAAA,SAAAs6B,EAIY,GAAKnkC,EAAM0hB,EAASvX,EAAM,cAAc,MAAK,EAAA,CAAA,EAoFrDN,EAAA,QAAAyR,MAAMtb,EAAiEirD,EAAU,MAAM,CAAA,EACvFphD,EAAA,QAAAuZ,OAAMpjB,EAAiEirD,EAAU,MAAM,CAAA,EA3F/F/hD,EAAA0P,EAAAsF,CAAG,C,2BATXxR,EAAA8L,CAAG,EAAHtP,EAAA0P,EAAAJ,CAAG,E,GAFI,C,iFC9BR,SAAAqzC,GAAA,EAAA,EAAA,C,QAOE,IAAIz7C,EAAW9P,EAAAqY,EAAA,OAAA,EAAG,IAAI,EAEhB2yC,EAAS/qD,MAAY6P,EAAI,IAAK,WAAW,E,CAGpC,IAAA+I,EAAA5Y,MAAA8V,EAAE,gBAAgB,CAAA,EAASmF,EAAAjb,MAAA8V,EAAC7V,EAAC8qD,CAAS,EAAG,0BAA4B,uBAAuB,CAAA,EAAxGxhC,GAAIlR,EAAA,C,6EACFuC,EAAG1a,EAAAuiB,CAAA,EAAHtK,EAAAhY,EAAAya,CAAG,E,CACwC,IAAAhC,EAAA5Y,MAAAC,EAAA8qD,CAAS,EAAG,GAAK,iBAAiB,EAA3EvyC,GAAIL,EAAA,C,4FAA2EjP,EAAA,GAAA7I,EAAAiN,EAAAsL,CAAA,EAAA,KAAA9C,EAAE,wBAAwB,CAAA,CAAA,E,6CACtD,IAAA8C,EAAA5Y,MAAAC,EAAA8qD,CAAS,EAAG,kBAAoB,EAAE,EAArFvyC,GAAIoF,EAAA,C,sGAAqF1U,EAAA,GAAA7I,EAAAya,EAAAlC,CAAA,EAAA,KAAA9C,EAAE,0BAA0B,CAAA,CAAA,E,+BAFvH3J,EAAAyO,CAAG,EAAH,IAAAoD,EAAA1d,EAAAsa,EAAG,CAAA,E,MAMD0vC,GAAgBjyC,EAAA,C,iCAEhBswC,GAActwC,EAAA,C,mCAHZpY,EAAA8qD,CAAS,EAAAlxC,EAAAP,CAAA,EAAAO,EAAAwF,EAAA,EAAA,C,GALbnW,EAAA,GAAA3I,EAAAqa,EAAG,aAAAhC,CAAA,EAAA,KAAmC9C,EAAE,gBAAgB,CAAA,CAAA,E,kCAHnD,C;0N,s8BCVR,SAAAk2C,GAAA,EAAA,EAAA,C,QAcE,IAAMz1B,EAAM,kGAENyV,EAAK;;+BAEkBzV,EAAM;iDACYA,EAAM;;;IAK/CvL,EAAW5P,GAAc,EAE3BmG,EAAOrgB,EAAO,IAAI,EAClB6f,EAAU7f,EAAO,EAAI,EACrBqZ,EAAOrZ,EAAO,EAAK,EACnBm6C,EAAUn6C,EAAO,IAAI,EACrBy1B,EAAQz1B,EAAO,IAAI,EACnBisC,EAASjsC,EAAO,IAAI,EAExB,eAAeogB,GAAO,CACpBrX,EAAA8W,EAAU,EAAI,EAEd,IAAM5J,EAAS,MAAM6T,EAAS,YAAO5S,EAAA,IAAW,MAAM4zB,CAAK,CAAA,EAE3D/hC,EAAA8W,EAAU,EAAK,EAEX5J,GAAMlN,EAAEsX,EAAOpK,EAAM,EAAA,CAC3B,CAEAmK,EAAI,EAEJ,IAAMkG,EAAU,GACdla,EACG,MAAM,QAAQ,CAAA,CACd,IAAK,GAAS2C,EAAK,KAAI,CAAA,CAAA,CACvB,OAAO,OAAO,EAEnB,SAAS4X,GAAM,CACb5d,EAAAoxC,EAAU,EAAE,EACZpxC,EAAA0sB,EAAK,CAAK,IAAK,GAAI,KAAM,GAAI,IAAK,GAAI,QAAS,GAAI,aAAc,EAAE,EAAA,EAAA,EACnE1sB,EAAAkjC,EAAS,IAAI,EACbniB,EAAS,MAAK,CAChB,CAEA,SAAS2wB,EAAK,EAAQ,CACpB1xC,EAAAoxC,EAAU4Q,EAAO,IAAG,EAAA,E,EACpBt1B,E,CACE,IAAKs1B,EAAO,IACZ,KAAMA,EAAO,KACb,IAAKA,EAAO,IACZ,QAASA,EAAO,QAAQ,KAAK;CAAI,EACjC,aAAcA,EAAO,cAAc,KAAO,E,MAE5ChiD,EAAAkjC,EAAS,IAAI,EACbniB,EAAS,MAAK,CAChB,CAEA,SAASsB,GAAQ,CACfriB,EAAAoxC,EAAU,IAAI,EACdpxC,EAAA0sB,EAAQ,IAAI,EACZ3L,EAAS,MAAK,CAChB,CAEA,eAAetY,GAAO,CACpBzI,EAAAsQ,EAAO,EAAI,EAEX,IAAMuvB,EAAK3oC,EAAGk6C,CAAO,IAAK,GACpBtkC,EAAS,CACb,IAAG5V,EAAEw1B,CAAK,CAAA,CAAC,IAAI,KAAI,EACnB,KAAIx1B,EAAEw1B,CAAK,CAAA,CAAC,KAAK,KAAI,EACrB,IAAGx1B,EAAEw1B,CAAK,CAAA,CAAC,IAAI,KAAI,EACnB,QAASnP,EAAMrmB,EAACw1B,CAAK,CAAA,CAAC,OAAO,EAC7B,aAAYx1B,EAAEw1B,CAAK,CAAA,CAAC,Y,EAGhBxf,EAAS,MAAM6T,EAAS,YAE1B8e,EACQ1xB,EAAA,IAAA,M;;iBAIFrB,C,EAEEqB,EAAA,IAAA,M;;;;iBAMFrB,C,EAEAjB,EAARg0B,EAAU,gBAA2C,gBAA5B,CAAI,KAAI3oC,EAAEw1B,CAAK,CAAA,CAAC,IAAI,CAA2C,C,EAG1F1sB,EAAAsQ,EAAO,EAAK,EAEPpD,IAELlN,EAAAkjC,EAASrD,EAAQ3yB,EAAO,kBAAkB,OAAS,KAAI,EAAA,EAEvDmV,EAAK,EACL,MAAMhL,EAAI,EACZ,CAEA,eAAe6Q,EAAI,EAAU,EAAQ,EAAQ,EAAW,KAAM,EACxD,IAAa,QAAQjQ,CAAQ,IAU7B,MARe8I,EAAS,YAAO5S,EAAA,IAE3B,MAAK,6BAA8B+J,EAAQ,uCAAA,CAC7C,IAAK8pC,EAAO,GAAG,CAAA,EAEnB1wC,CAAM,GAGE,MAAM+F,EAAI,CACtB,CAEA,eAAe+tB,EAAO,EAAQ,CAC5B,GAAE,CAAG,QAAQv5B,EAAE,yBAAwB,CAAI,KAAMm2C,EAAO,IAAI,CAAA,CAAA,EAAM,OAElE,IAAM90C,EAAS,MAAM6T,EAAS,YAAO5S,EAAA,IAC/B,MAAK,+EAAA,CACP,IAAK6zC,EAAO,GAAG,CAAA,CAAA,EAIf90C,GAAMlN,EAAEkjC,EAASh2B,EAAO,wBAAwB,OAAM,EAAA,CAC5D,CAEA,eAAemyC,EAAK,EAAQ,CAC1Br/C,EAAAsQ,EAAO,EAAI,EAEX,IAAMpD,EAAS,MAAM6T,EAAS,YAAO5S,EAAA,IAC/B,MAAK,gFAAA,CACP,IAAK6zC,EAAO,GAAG,CAAA,CAAA,EAInBhiD,EAAAsQ,EAAO,EAAK,EAEPpD,IAEDA,EAAO,gBAAgB,UACzB6T,EAAS,IAAIlV,EAAE,iBAAgB,CAAI,KAAMm2C,EAAO,IAAI,CAAA,CAAA,EAEpDjhC,EAAS,MAAM7T,EAAO,gBAAgB,OAAO,EAG/C,MAAMmK,EAAI,EACZ,CAEA,IAAM4lC,EAAQ9lD,MAAAD,EAAYw1B,CAAK,CAAA,EAAE,IAAI,KAAI,GAAAx1B,EAAMw1B,CAAK,CAAA,CAAC,KAAK,KAAI,GAAAx1B,EAAMw1B,CAAK,CAAA,CAAC,IAAI,KAAI,CAAA,E,CAGvE,IAAA/d,EAAAxX,MAAA0U,EAAE,gBAAgB,CAAA,EAA9ByT,GAAIlR,EAAA,C,4DACF8oC,GAAahpC,EAAA,CAAA,KAAA,SAAA,CAAA,E,aAEb8Q,GAAOrL,EAAA,C,eAAW,OAAAoN,EAAS,K,uBAGzBlS,GAAOT,EAAA,CAAA,CAAA,C,iCAIG,IAAAO,EAAAxX,MAAA0U,EAAE,sBAAsB,CAAA,EACzBmF,EAAA7Z,MAAA0U,EAAE,qBAAqB,CAAA,EAF9BqH,EAAA9E,EAAA,C,6EAIEyG,EAAKzd,EAAA04B,CAAA,EAALrvB,EAAAoU,CAAK,EACL,IAAA7G,EAAG3W,EADHwd,EAAK,CAAA,EAEHjE,EAAMtZ,EADR0W,CAAG,EACD6C,EAAAtZ,EAAAqZ,EAAM,EAAA,EADR1O,EAAA8L,CAAG,E,MADH1M,GAAAuT,EAAK3d,EAAyDgsC,CAAM,CAAA,E,QAEiB,KAAAr3B,EAAE,sBAAsB,CAAA,C,EAF7GlM,EAAA,QAAAkV,EAAgF,GAAUlV,EAAM,cAAc,OAAM,CAAA,EAElHN,EAAA,QAAAuR,MAAMpZ,EAA4D0rC,EAAS,IAAI,CAAA,E,yCAPjFhsC,EAAAgsC,CAAM,GAAAtzB,EAAAgE,CAAA,C,uBAaO,IAAAjF,EAAAxX,MAAAD,EAAAk6C,CAAO,IAAK,GAAKvlC,EAAE,kBAAkB,EAAIA,EAAE,oBAAmB,CAAI,KAAI3U,EAAEw1B,CAAK,CAAA,CAAC,IAAI,CAAA,CAAA,EAAjGxZ,EAAO9E,EAAA,C,qDACLsF,EAAGtc,EAAAyrB,CAAA,EAAHxO,EAAA/c,EAAAoc,CAAG,E,CAEO,IAAA/E,EAAAxX,MAAA0U,EAAE,kBAAkB,CAAA,EAEjBmF,EAAA7Z,MAAAD,EAAAk6C,CAAO,IAAK,EAAE,EAHzB1yB,EAAArK,EAAA,C,gHAEC,IAAA,OAAU,CAAE,OAAAnd,EAAAw1B,CAAK,CAAA,CAAC,G,EAAlB,IAAA,MAAU,EAAA,CAAE,EAAAA,CAAK,CAAA,CAAC,IAAGnU,C,kBAMT,IAAA5J,EAAAxX,MAAA0U,EAAE,mBAAmB,CAAA,EAAlC6S,EAAKnK,EAAA,C,yBAAgC,IAAA,OAAU,CAAE,OAAArd,EAAAw1B,CAAK,CAAA,CAAC,I,EAAlB,IAAA,MAAU,EAAA,CAAE,EAAAA,CAAK,CAAA,CAAC,KAAInU,C,IAT7DrW,EAAAwR,CAAG,EAAH,IAAAmG,EAAAxiB,EAAAqc,EAAG,CAAA,E,CAaK,IAAA/E,EAAAxX,MAAA0U,EAAE,sBAAsB,CAAA,EADhC6S,EAAA7E,EAAA,C,0HAGC,IAAA,OAAU,CAAE,OAAA3iB,EAAAw1B,CAAK,CAAA,CAAC,G,EAAlB,IAAA,MAAU,EAAA,CAAE,EAAAA,CAAK,CAAA,CAAC,IAAGnU,C,IAMtB,IAAAzJ,EAAKzX,EAAAwiB,EAAA,CAAA,EACH9K,EAAIzX,EADNwX,CAAK,EACHiC,EAAAxZ,EAAAwX,EAAI,EAAA,EACJyT,EAAAnrB,EADA0X,EAAI,CAAA,EACJnN,GAAA4gB,CAAA,EAMA,IAAAvU,EAAC5W,EANDmrB,EAAA,CAAA,EAMA/J,EAAAlhB,EAAA0W,EAAC,EAAA,EARH/L,EAAA4M,CAAK,EAAL,IAAAoL,EAAA7iB,EAAAyX,EAAK,CAAA,E,OAaK,IAAAH,EAAAxX,MAAA0U,EAAE,0BAA0B,CAAA,E,SAExB,CAAA,GAAIA,EAAE,iCAAiC,CAAA,EAAO,GAAA3U,EAAAogB,CAAI,CAAA,CAAC,cAAc,IAAK,GAAI,CAAMtR,EAAK,IAAK6F,EAAE,oBAAmB,CAAI,KAAM7F,EAAK,IAAI,CAAA,CAAA,CAAA,C,GAH9I0zB,GAAAtrB,EAAA,C,qCAEQ,OAAAlX,EAAAw1B,CAAK,CAAA,CAAC,Y,6BAEF,SAAA,GAAG,EAAMA,CAAK,CAAA,CAAC,aAAe5tB,C,aALxC5H,EAAAogB,CAAI,CAAA,CAAC,cAAc,QAAM1H,EAAAqE,CAAA,C,GAS7B,IAAAJ,EAAGxc,EAAA6iB,EAAA,CAAA,EACDpJ,EAAMxZ,EADRuc,CAAG,EACD8E,EAAAphB,EAAAuZ,EAAM,EAAA,EAGN8H,EAAMvhB,EAHNyZ,EAAM,CAAA,EAGN+H,EAAAthB,EAAAqhB,EAAM,EAAA,EAJR1W,EAAA2R,CAAG,E,4BACD,EAAM,SAAA3c,EAAwDoZ,CAAI,GAAA,CAAApZ,EAAK+lD,CAAQ,E,oBApBrDpxC,EAAE,sBAAsB,MAOlCA,EAAE,2BAA2B,MAc3C3U,EAAAk6C,CAAO,IAAK,GAAKvlC,EAAE,qBAAqB,EAAIA,EAAE,mBAAmB,MAEAA,EAAE,qBAAqB,C,GAtB1FzK,EAAAohB,MAAAtrB,EAGaw1B,CAAK,CAAA,CAAC,QAAO,GAAA,EAAbA,CAAK,CAAA,CAAC,QAAOnU,CAAA,EAgB1BlZ,EAAA,QAAAyR,EAA0FrI,CAAI,EAG9FpJ,EAAA,QAAAuZ,EAA2DyJ,CAAK,E,yCA/ClEnrB,EAAAw1B,CAAK,GAAA9c,EAAAuE,CAAA,C,iBAwDE,IAAAmE,EAAO,GAAA,CACd,IAAAY,EAAMxiB,GAAA,EAANqiB,EAAAxhB,EAAA2hB,EAAM,EAAA,EAAiDja,EAAA,GAAAxH,EAAAshB,EAAApK,CAAA,EAAA,KAAA9C,EAAE,kBAAkB,CAAA,CAAA,EAA3ExM,EAAA,QAAA6Z,EAAiD0E,CAAG,EAApDlf,EAAA0P,EAAA8K,CAAM,C,EAJFvK,EAAAxX,MAAA0U,EAAE,oBAAoB,CAAA,EACvBmF,EAAA7Z,MAAAD,EAAAogB,CAAI,CAAA,CAAC,OAAO,OAASzL,EAAE,mBAAmB,EAAIA,EAAE,oBAAoB,CAAA,EAF3EqH,EAAAmH,EAAA,C,iDAIW,U,kCAIHjY,EAAAwY,EAAA,OAAA1jB,EAAAogB,CAAI,CAAA,CAAC,OAAU,GAAQ0qC,EAAO,KAAG,EAAlB,IAAM,CACzB,IAAA5tC,EAAGvd,GAAA,EACDyd,EAAGhd,EADL8c,CAAG,EAEC8G,EAAG5jB,EADLgd,CAAG,EAEC5E,EAAIpY,EADN4jB,CAAG,EACDjC,EAAA1hB,EAAAmY,EAAI,EAAA,EACJ6K,EAAIljB,EADJqY,EAAI,CAAA,EAEFgL,EAAIpjB,EADNijB,CAAI,EACFpB,EAAA5hB,EAAAmjB,EAAI,EAAA,EAAJpB,EAAAjiB,EAAAqjB,CAAI,EADNxY,EAAAqY,CAAI,EAGJ,IAAAO,EAAIzjB,EAHJkjB,EAAI,CAAA,EAGJf,EAAAjiB,EAAAujB,CAAI,EAAJE,EAAA3jB,EAAAyjB,EAAI,CAAA,E,MAMF,IAAAc,EAAIjlB,GAAA,EAAJ8iB,EAAAliB,EAAAqkB,EAAI,EAAA,EAA6B3c,MAAAxH,EAAAgiB,EAAAviB,EAAA8qD,CAAM,CAAA,CAAC,WAAW,CAAA,EAAnDtjD,EAAA0P,EAAAwN,CAAI,C,QAEJ,IAAAmJ,EAAInuB,GAAA,EAAJujB,EAAA5iB,EAAAwtB,EAAI,EAAA,E,iBAAelZ,EAAE,8BAA6B,CAAI,IAAKsG,GAAGjb,EAAC8qD,CAAM,CAAA,CAAC,eAAe,CAAA,CAAA,C,GAArFtjD,EAAA0P,EAAA2W,CAAI,C,UAHF7tB,EAAA8qD,CAAM,CAAA,CAAC,YAAWpyC,EAAA6D,CAAA,EAAAvc,EAEb8qD,CAAM,CAAA,CAAC,iBAAepyC,EAAA8J,EAAA,CAAA,C,GAZjCxX,EAAAgZ,CAAG,EAiBH,IAAAK,EAAGlkB,EAjBH6jB,EAAG,CAAA,EAkBD3B,EAAMjiB,EADRikB,CAAG,EACDnB,EAAA7iB,EAAAgiB,EAAM,EAAA,EACNuJ,EAAMzrB,EADNkiB,EAAM,CAAA,EACNiB,EAAAjjB,EAAAurB,EAAM,EAAA,EACNC,EAAM1rB,EADNyrB,EAAM,CAAA,EACNnI,EAAApjB,EAAAwrB,EAAM,EAAA,EACNyO,EAAAn6B,EADA0rB,EAAM,CAAA,EACNhI,EAAAxjB,EAAAi6B,EAAA,EAAA,EAJFtvB,EAAAqZ,CAAG,EAlBLrZ,EAAAoS,CAAG,EADLpS,EAAAkS,CAAG,E,oBAG6BjT,EAAA8X,EAAA/hB,EAAA8qD,CAAM,CAAA,CAAC,IAAI,EAEX7gD,EAAAgY,EAAAjiB,EAAA8qD,CAAM,CAAA,CAAC,GAAG,EAAY7gD,EAAAmY,EAAA,MAAApiB,EAAA8qD,CAAM,CAAA,CAAC,KAAG,GAAA,KAAArzC,GAAA,IAAA,E,wBAe1D,EAAM,SAAAzX,EAA4CoZ,CAAI,E,kCAfSzE,EAAE,qBAAoB,CAAI,IAAKsG,GAAGjb,EAAC8qD,CAAM,CAAA,CAAC,SAAS,CAAA,CAAA,MAGhH9qD,EAAA8qD,CAAM,CAAA,CAAC,QAAQ,OAAS9qD,EAAA8qD,CAAM,CAAA,CAAC,QAAQ,KAAK,IAAI,EAAIn2C,EAAE,2BAA2B,MAAG3U,EAAA8qD,CAAM,CAAA,CAAC,aACxFn2C,EAAE,oBAAmB,CAAI,KAAI3U,EAAE8qD,CAAM,CAAA,CAAC,aAAa,IAAI,CAAA,EACvD,OAUiFn2C,EAAE,mBAAmB,MACrCA,EAAE,mBAAmB,MACTA,EAAE,qBAAqB,MAYvGA,EAAE,sBAAsB,C,GAd1BxM,EAAA,QAAAka,MAAuE8lC,EAAInoD,EAAC8qD,CAAM,CAAA,CAAA,EAClF3iD,EAAA,QAAAyjB,MAAuD4uB,EAAIx6C,EAAC8qD,CAAM,CAAA,CAAA,EAClE3iD,EAAA,QAAA0jB,MAAiEqiB,EAAMluC,EAAC8qD,CAAM,CAAA,CAAA,EAC9E3iD,EAAA,QAAAmyB,MAIGtJ,EACE,qBAAoBhxB,EACpB8qD,CAAM,EACNn2C,EAAE,0BAAyB,CAAI,KAAI3U,EAAE8qD,CAAM,CAAA,CAAC,IAAI,CAAA,EAChDn2C,EAAE,0BAAyB,CAAI,KAAI3U,EAAE8qD,CAAM,CAAA,CAAC,IAAI,CAAA,CAAA,CAAA,EA/B3DtjD,EAAA0P,EAAAgG,CAAG,C,iEA2CU,IAAAzF,EAAAxX,MAAA0U,EAAE,wBAAwB,CAAA,EAAzCqH,EAAO9E,EAAA,C,2DACChM,EAAAsZ,EAAA,OAAAxkB,EAAAogB,CAAI,CAAA,CAAC,SAAY,GAAQ0qC,EAAO,KAAG,EAAlB,IAAM,CAC3B,IAAAp+B,EAAG9sB,GAAA,EACDkuB,EAAI1tB,EADNssB,CAAG,EACDzI,EAAA7jB,EAAA0tB,CAAI,EAAgCC,EAAI5tB,EAAA8jB,CAAA,EAAJM,EAAAlkB,EAAA0tB,EAAI,EAAA,EAAxC/iB,EAAA8iB,CAAI,EACJ,IAAAkN,EAAA76B,EADA2tB,EAAI,CAAA,EACJrJ,EAAApkB,EAAA26B,EAAA,EAAA,EAFFhwB,EAAA0hB,CAAG,E,MACqBziB,EAAAga,EAAA,GAAAjkB,EAAA8qD,CAAM,CAAA,CAAC,MAAI,GAAA,EAAA,EAAsB7gD,EAAAsa,EAAAvkB,EAAA8qD,CAAM,CAAA,CAAC,GAAG,E,QAM/D,KAAAn2C,EAAE,0BAA0B,CAAA,C,EAL9BxM,EAAA,QAAA6yB,MAGgBhK,EAAI,qBAAoBhxB,EAAE8qD,CAAM,EAAEn2C,EAAE,mBAAkB,CAAI,KAAI3U,EAAE8qD,CAAM,CAAA,CAAC,IAAI,CAAA,CAAA,CAAA,EAL7FtjD,EAAA0P,EAAAwV,CAAG,C,4CAHL1sB,EAAAogB,CAAI,CAAA,CAAC,SAAS,QAAM1H,EAAA0K,CAAA,C,mBAtHtBpjB,EAAA4f,CAAO,GAAA,CAAA5f,EAAKogB,CAAI,EAAA1H,EAAAP,CAAA,EAAAnY,EAEXogB,CAAI,GAAA1H,EAAA6K,EAAA,CAAA,C,qCATR,C,8ZCxKR,SAAA4nC,GAAA,EAAA,EAAA,C,QAWE,IAOMC,EAAa,CAChB,CAAA,EAAGz2C,EAAE,qBAAqB,CAAA,EAC1B,CAAA,GAAIA,EAAE,6BAA6B,CAAA,EACnC,CAAA,IAAKA,EAAE,8BAA8B,CAAA,EACrC,CAAA,IAAKA,EAAE,4BAA4B,CAAA,EACnC,CAAA,IAAKA,EAAE,+BAA+B,CAAA,C,EAGnC02C,EAAY,CACf,CAAA,EAAG12C,EAAE,qBAAqB,CAAA,EAC1B,CAAA,IAAKA,EAAE,8BAA8B,CAAA,EACrC,CAAA,IAAKA,EAAE,4BAA4B,CAAA,EACnC,CAAA,IAAKA,EAAE,+BAA+B,CAAA,EACtC,CAAA,KAAMA,EAAE,iCAAiC,CAAA,C,EAGtC6R,GAAW,EAAQ,IAAI,CAC1B1X,GAAQuX,EAAO,MAAI,CAAGs1B,KAAUA,IAAS7sC,CAAI,EAAIuX,EAAa,CAAA,GAAAA,EAAM,CAAGvX,EAAM6F,EAAE,sBAAqB,CAAI,KAAM7F,CAAI,CAAA,CAAA,CAAA,EAE/G+a,EAAW5P,GAAc,EAE3BmG,EAAOrf,EAAO,IAAI,EAClBuqD,EAASvqD,EAAO,EAAE,EAClBwqD,EAAWxqD,EAAO,EAAE,EAExB,eAAeof,GAAO,CACpB,IAAMnK,EAAS,MAAM6T,EAAS,YAAO5S,EAAA,IAAW,MAAM;;;;;GAAK,CAAA,EAEtDjB,IAELlN,EAAAsX,EAAOpK,EAAM,EAAA,EACblN,EAAAwiD,EAASt1C,EAAO,OAAO,eAAiB,GAAE,EAAA,EAC1ClN,EAAAyiD,EAAWv1C,EAAO,OAAO,eAAiB,GAAE,EAAA,EAC9C,CAEAmK,EAAI,EAEJ,eAAe3X,EAAO,EAAS,EAAQ,CAuBjC,MAtBeqhB,EAAS,YAEpB5S,EAAA,IAAA,M;;;;;;;;;;;;;aAeFw1B,C,EAEJryB,C,GAGQ,MAAM+F,EAAI,CACtB,CAEA,SAASqrC,EAAY,EAAM,CAGzB,OAFI7P,GAAI,CAAK,QAAQhnC,EAAE,8BAA8B,CAAA,EAAWwL,EAAI,EAE7D3X,EAAM,CAAG,YAAamzC,CAAI,EAAIhnC,EAAE,uBAAuB,CAAA,CAChE,C,kBAGDmT,GAAO9Q,EAAA,C,eAAW,OAAA6S,EAAS,K,0CAKb,IAAApS,EAAAvW,MAAAyT,EAAE,uBAAuB,CAAA,EAC1BmF,EAAA5Y,MAAAyT,EAAE,sBAAsB,CAAA,EAH/BqH,EAAAa,EAAA,C,uFAQM,CAAA,WAAYlI,EAAE,0BAA0B,CAAA,EACxC,CAAA,QAASA,EAAE,uBAAuB,CAAA,EAClC,CAAA,SAAUA,EAAE,wBAAwB,CAAA,C,GALxC6tB,GAAAtrB,EAAA,C,YACQ,OAAA/V,EAAAif,CAAI,CAAA,CAAC,OAAO,O,6BAMR,SAAA,GAAY5X,EAAM,CAAG,SAAO,EAAImM,EAAE,yBAAyB,CAAA,C,0CAMjE,IAAA8C,EAAAvW,MAAAyT,EAAE,uBAAuB,CAAA,EAC1BmF,EAAA5Y,MAAAyT,EAAE,sBAAsB,CAAA,EAH/BqH,EAAAc,EAAA,C,0EAMU,IAAArF,EAAAvW,MAAAC,EAAAif,CAAI,CAAA,CAAC,OAAO,cAAc,KAAO,EAAE,E,SAC/B,CAAA,GAAIzL,EAAE,0BAA0B,CAAA,EAAO,GAAAxT,EAAAif,CAAI,CAAA,CAAC,eAAe,IAAK,GAAM,CAAM2lB,EAAO,IAAKA,EAAO,IAAI,CAAA,C,GAF/GvD,GAAAtrB,EAAA,C,oDAGY,SAAA,GAAiB1O,EAAM,CAAG,cAAY,EAAImM,EAAE,yBAAyB,CAAA,C,0CAM3E,IAAA8C,EAAAvW,MAAAyT,EAAE,uBAAuB,CAAA,EAC1BmF,EAAA5Y,MAAAyT,EAAE,sBAAsB,CAAA,EAH/BqH,EAAAgB,EAAA,C,4FAMU,IAAAvF,EAAAvW,MAAAyT,EAAE,+BAA+B,CAAA,EADzCouB,GAAA5lB,EAAA,C,uCAEU,OAAAhc,EAAAif,CAAI,CAAA,CAAC,OAAO,Y,EACV,SAAA,GACT5X,EAAM,CAAG,cAAY,EAAImM,EAAE,yBAAyB,CAAA,C,iBAI/C,IAAA8C,EAAAvW,MAAAyT,EAAE,gCAAgC,CAAA,EAD1C6S,EAAAnK,EAAA,C,6DAIe,WAAA7U,EAAM,CAAG,cAAarH,EAAEmqD,CAAM,CAAA,EAAI32C,EAAE,yBAAyB,CAAA,EAF3E,IAAA,OAAU,CAAE,OAAAxT,EAAAmqD,CAAM,C,EAAlB,IAAA,MAAU,EAAA,CAAExiD,EAAAwiD,EAAMjqC,EAAA,EAAA,C,IAKnB,IAAAG,EAAKvgB,EAAAoc,EAAA,CAAA,EACHxF,EAAIzW,EADNogB,CAAK,EACHrV,EAAA9K,EAAAwW,EAAI,EAAA,EACJyT,EAAQrqB,EADR4W,EAAI,CAAA,EACJnN,GAAA4gB,CAAQ,EACR,IAAA9S,EAAIvX,EADJqqB,EAAQ,CAAA,EACR3R,EAAAtY,EAAAmX,EAAI,EAAA,EAHNxN,EAAAwW,CAAK,EAOL,IAAA1K,EAAG7V,EAPHugB,EAAK,CAAA,EAQH9H,EAAMtY,EADR0V,CAAG,EACD+C,EAAAxY,EAAAqY,EAAM,EAAA,EADR1O,EAAA8L,CAAG,E,uCANyBnC,EAAE,gCAAgC,MAG1DA,EAAE,4BAA4B,MAK9BA,EAAE,+BAA+B,C,GAPnCzK,EAAAohB,MAAQnqB,EAAwDoqD,CAAQ,EAAA,GAAAjqD,EAARiqD,EAAQlqC,CAAA,CAAA,EAMxElZ,EAAA,QAAAuR,MAAuDlR,EAAM,CAAG,cAAarH,EAAEoqD,CAAQ,CAAA,EAAI52C,EAAE,gCAAgC,CAAA,CAAA,E,6CAQzH,IAAA8C,EAAAvW,MAAAyT,EAAE,qBAAqB,CAAA,EACxBmF,EAAA5Y,MAAAyT,EAAE,oBAAoB,CAAA,EAH7BqH,EAAA2G,EAAA,C,yEAKE,IAAAnG,EAAG5b,GAAA,EAAHoiB,EAAA5hB,EAAAob,CAAG,E,CAEO,IAAA/E,EAAAvW,MAAAyT,EAAE,uBAAuB,CAAA,EACzBmF,EAAA5Y,MAAAC,EAAAif,CAAI,CAAA,CAAC,OAAO,cAAgB,CAAC,EAC3BrG,EAAA7Y,MAAAslB,EAAQ4kC,EAAajqD,EAAEif,CAAI,CAAA,CAAC,OAAO,YAAY,CAAA,EAHzDoiB,GAAAxf,EAAA,C,6EAIY,SAAA,GAASxa,EAAM,CAAG,aAAc,OAAOmzC,CAAI,CAAA,EAAKhnC,EAAE,uBAAuB,CAAA,C,iBAI7E,IAAA8C,EAAAvW,MAAAyT,EAAE,sBAAsB,CAAA,EACxBmF,EAAA5Y,MAAAC,EAAAif,CAAI,CAAA,CAAC,OAAO,aAAe,CAAC,EAC1BrG,EAAA7Y,MAAAslB,EAAQ6kC,EAAYlqD,EAAEif,CAAI,CAAA,CAAC,OAAO,WAAW,CAAA,CAAE,KAAG,CAAGu7B,EAAM/jC,KAAK,CACvE+jC,EACA/jC,EACA+jC,EAAO,GAAKA,IAAIx6C,EAAKif,CAAI,CAAA,CAAC,OAAO,cAAgB,E,IANpDoiB,GAAArf,EAAA,C,6EAQY,SAAA,GAASqoC,EAAY,OAAO7P,CAAI,CAAA,C,GAhB9C3wC,EAAAwR,CAAG,EAAHhV,EAAA0P,EAAAsF,CAAG,C,yCAnEPrb,EAAAif,CAAI,GAAA1H,EAAAP,CAAA,C,aAJD,C,+7GCtFR,SAAAy0C,GAAA,EAAA,EAAA,C,QAgBE,IAAMx3B,EAAM;;;;;;IAQNyV,EAAK;;iCAEoBzV,EAAM;mDACYA,EAAM;;;;;IAOjDy3B,EAAI;;;;;;;;IAUJC,EAAI;;;;;;;;;;IAYJvR,EAAO,KACP7gC,EAAM,GAAK6gC,EAEXwR,EAAS,CACZ,CAAA,KAAMp4C,EAAE,sCAAsC,CAAA,EAC3C,GAAA,CAAA4mC,EAAM,EAAIA,EAAM,GAAKA,EAAM7gC,EAAK,EAAIA,EAAK,GAAKA,EAAK,GAAKA,CAAG,CAAA,CAAE,IAAK,GAAO,CAAMmrB,EAASD,GAASC,CAAO,CAAA,CAAA,C,EAGxGmnB,EAAI,CACP,CAAA,KAAMr4C,EAAE,gBAAgB,CAAA,EACrB,GAAA,CAAA,IAAS,KAAS4mC,EAAM,EAAIA,EAAM7gC,CAAG,CAAA,CAAE,IAAK,GAAO,CAAMmrB,EAASD,GAASC,CAAO,CAAA,CAAA,C,EAGlFonB,EAAM,CAAK,CAAA,KAAMt4C,EAAE,gBAAgB,CAAA,EAAQ,GAAA,CAAA,GAAI,GAAI,GAAI,EAAE,CAAA,CAAE,IAAK,GAAK,CAAMu4C,EAAOv4C,EAAE,iBAAgB,CAAI,OAAK,CAAA,CAAA,CAAA,C,EAE7Gw4C,EAAI,CACP,CAAA,EAAGx4C,EAAE,+BAA+B,CAAA,EACpC,CAAA,GAAIA,EAAE,iCAAiC,CAAA,EACvC,CAAA,GAAIA,EAAE,oCAAoC,CAAA,EAC1C,CAAA,GAAIA,EAAE,kCAAkC,CAAA,C,EAGrCy4C,EAAe,GACnBD,EAAK,MAAI,CAAGr+C,KAAUA,IAASrD,CAAK,EAAI0hD,E,CAAW,GAAAA,EAAO,CAAA1hD,EAAOkJ,EAAE,iCAAgC,CAAI,KAAMlJ,CAAK,CAAA,CAAA,C,EAE9Gya,GAAW,EAAS,IACxBza,IAAU,MAAQ+a,EAAQ,MAAI,CAAG1X,KAAUA,IAASrD,CAAK,EACrD+a,E,CACI,GAAAA,EAAU,CAAA/a,EAAOkJ,EAAE,4BAA2B,CAAI,MAAOlJ,CAAK,CAAA,CAAA,C,EAElE4hD,GAAY,EAAO,IAAW1/C,EAAO,IAAK,GAAK,CAAMlC,EAAOkJ,EAAC,YAAa8W,EAAK,GAAIhgB,GAAK,CAAA,CAAA,EAExF+5B,EAAW6nB,EAAS,WAAU,CAAG,MAAO,WAAY,UAAU,CAAA,EAE9DC,EAAQD,EAAS,QAAO,CAAG,WAAY,UAAW,WAAY,YAAY,CAAA,EAE1EE,EAASF,EAAS,SAAQ,CAAG,MAAO,UAAW,eAAgB,QAAS,MAAO,gB,GAE/E9nB,EAAgB8nB,EAAS,gBAAe,CAAG,OAAQ,OAAQ,OAAQ,UAAU,CAAA,EAE7EG,EAAc,CAAI,WAAY,QAAS,OAAO,CAAA,CAAE,IAAK,GAAK,CAAMnyB,EAAO1mB,EAAC,yBAA0B0mB,GAAK,CAAA,CAAA,EAEvGoyB,EAAK,CACT,IAAK,GACL,KAAM,GACN,OAAQ,GACR,SAAU,WACV,MAAO,WACP,cAAe,GACf,MAAO,MACP,cAAe,GACf,gBAAiB,EACjB,sBAAuB,GACvB,iBAAkB,GAClB,aAAY,CAAG,WAAY,UAAW,UAAU,EAChD,cAAa,CAAG,MAAO,UAAW,cAAc,EAChD,qBAAsB,GACtB,wBAAyB,GACzB,gBAAiB,KACjB,mBAAoB,KACpB,wBAAyB,GACzB,aAAc,KACd,aAAc,KACd,YAAa,GACb,aAAc,GACd,UAAW,KACX,aAAc,OACd,OAAQ,GACR,aAAY,CAAA,C,EAGR5jC,GAAW5P,GAAc,EAE3BmG,GAAOle,EAAO,IAAI,EAClB0d,GAAU1d,EAAO,EAAI,EACrBkX,EAAOlX,EAAO,EAAK,EACnBg4C,GAAUh4C,EAAO,IAAI,EACrBszB,EAAQtzB,EAAMC,EAAA,CAAA,GAAMsrD,CAAK,CAAA,CAAA,EAE7B,eAAettC,IAAO,CACpBrX,EAAA8W,GAAU,EAAI,EAEd,IAAM5J,EAAS,MAAM6T,GAAS,YAAO5S,EAAA,IAAW,MAAM4zB,CAAK,CAAA,EAE3D/hC,EAAA8W,GAAU,EAAK,EAEX5J,GAAMlN,EAAEsX,GAAOpK,EAAM,EAAA,CAC3B,CAEAmK,GAAI,EAEJ,SAASuG,GAAM,CACb5d,EAAAoxC,GAAU,EAAE,EACZpxC,EAAA4qC,GAAa,EAAK,EAClB5qC,EAAA0sB,EAAQ,gBAAgBi4B,CAAK,EAAA,EAAA,EAC7B5jC,GAAS,MAAK,CAChB,CAEA,SAAS2wB,GAAK,EAAQ,CACpB1xC,EAAAoxC,GAAUnU,EAAO,IAAG,EAAA,E,EACpBvQ,E,CACK,GAAA,gBAAepzB,EAAiB2jC,CAAM,CAAA,EACzC,aAAcA,EAAO,aAAa,KAAK,GAAG,C,MAE5Clc,GAAS,MAAK,CAChB,CAEA,IAAM8pB,GAAQ,GACZ5jC,EACG,YAAW,CAAA,CACX,UAAU,MAAM,CAAA,CAChB,QAAQ,cAAe,GAAG,CAAA,CAC1B,QAAQ,WAAY,EAAE,EAEvB2jC,GAAaxxC,EAAO,EAAK,EAE7B,SAAS2N,GAAM,EAAM,CACnB,EAAA2lB,CAAK,CAAA,CAAC,KAAOzlB,EACX1N,EAAE63C,EAAO,IAAK,IAAE,CAAA73C,EAAKqxC,EAAU,IAAA,EAAEle,CAAK,CAAA,CAAC,IAAMme,GAAK5jC,CAAI,EAC1D,CAEA,SAASob,IAAQ,CACfriB,EAAAoxC,GAAU,IAAI,EACdrwB,GAAS,MAAK,CAChB,CAEA,IAAMrJ,IAAU,EAAM,EAAO,IAC3B2sB,EAAS,CAAA,GAAA,IAAI,IAAG,CAAA,GAAKh9B,EAAM1E,CAAK,CAAA,CAAA,EAAM0E,EAAK,OAAQ,GAASrB,IAASrD,CAAK,EAE5E,SAASmK,IAAY,CACnB,MAAM,CACJ,IAAGvT,EAAEmzB,CAAK,CAAA,CAAC,IAAI,KAAI,EACnB,KAAInzB,EAAEmzB,CAAK,CAAA,CAAC,KAAK,KAAI,EACrB,OAAMnzB,EAAEmzB,CAAK,CAAA,CAAC,OACd,SAAQnzB,EAAEmzB,CAAK,CAAA,CAAC,SAChB,MAAKnzB,EAAEmzB,CAAK,CAAA,CAAC,MACb,cAAanzB,EAAEmzB,CAAK,CAAA,CAAC,cACrB,MAAKnzB,EAAEmzB,CAAK,CAAA,CAAC,MACb,cAAanzB,EAAEmzB,CAAK,CAAA,CAAC,cACrB,gBAAiB,OAAMnzB,EAACmzB,CAAK,CAAA,CAAC,eAAe,GAAK,EAClD,sBAAqBnzB,EAAEmzB,CAAK,CAAA,CAAC,sBAC7B,iBAAgBnzB,EAAEmzB,CAAK,CAAA,CAAC,kBAAgBnzB,EAAImzB,CAAK,CAAA,CAAC,aAAa,SAAS,UAAU,EAClF,aAAYnzB,EAAEmzB,CAAK,CAAA,CAAC,aACpB,cAAanzB,EAAEmzB,CAAK,CAAA,CAAC,cACrB,qBAAoBnzB,EAAEmzB,CAAK,CAAA,CAAC,qBAC5B,wBAAuBnzB,EAAEmzB,CAAK,CAAA,CAAC,wBAC/B,gBAAenzB,EAAEmzB,CAAK,CAAA,CAAC,gBACvB,mBAAkBnzB,EAAEmzB,CAAK,CAAA,CAAC,mBAC1B,wBAAuBnzB,EAAEmzB,CAAK,CAAA,CAAC,wBAC/B,aAAYnzB,EAAEmzB,CAAK,CAAA,CAAC,aACpB,aAAYnzB,EAAEmzB,CAAK,CAAA,CAAC,aACpB,YAAa,OAAMnzB,EAACmzB,CAAK,CAAA,CAAC,WAAW,GAAK,EAC1C,aAAYnzB,EAAEmzB,CAAK,CAAA,CAAC,aAAa,MAAM,QAAQ,CAAA,CAAE,OAAO,OAAO,EAC/D,UAASnzB,EAAEmzB,CAAK,CAAA,CAAC,WAAS,CAAA,EAC1B,cAAanzB,EAAEmzB,CAAK,CAAA,CAAC,YAAc,KACnC,aAAYnzB,EAAEmzB,CAAK,CAAA,CAAC,aACpB,OAAMnzB,EAAEmzB,CAAK,CAAA,CAAC,OACd,aAAYnzB,EAAEmzB,CAAK,CAAA,CAAC,Y,CAExB,CAEA,eAAejkB,IAAO,CACpBzI,EAAAsQ,EAAO,EAAI,EAEX,IAAMuvB,EAAKtmC,EAAG63C,EAAO,IAAK,GACpBt5B,EAAO,MAAMiJ,GAAS,YAEpB5S,EAAA,IAAA,MACF0xB,EACuB,mBAAAkkB,EAAI,yBAA0BC,EAAI,8BAClC,mBAAAD,EAAI,yBAA0BC,EAAI,8BACzDl3C,GAAS,C,EAELjB,EAARg0B,EAAU,iBAA4C,iBAA5B,CAAI,KAAItmC,EAAEmzB,CAAK,CAAA,CAAC,IAAI,CAA4C,C,EAG5F1sB,EAAAsQ,EAAO,EAAK,EAEPwH,IAEL9X,EAAAoxC,GAAU,IAAI,EACd,MAAM/5B,GAAI,EACZ,CAEA,eAAe6Q,GAAI,EAAU,EAAQ,EAAQ,EAAW,KAAM,EACxD,IAAa,QAAQjQ,CAAQ,IAU7B,MARe8I,GAAS,YAAO5S,EAAA,IAE3B,MAAK,6BAA8B+J,EAAQ,wCAAA,CAC7C,IAAK+kB,EAAO,GAAG,CAAA,EAEnB3rB,CAAM,GAGE,MAAM+F,GAAI,CACtB,CAEA,IAAMqe,GAAW,GAAM,CAEnBuH,EAAO,OAASpxB,EAAE,8BAA8B,EAAIA,EAAE,kCAAkC,EACxFoxB,EAAO,qBAAuBpxB,EAAE,yCAAyC,EAAI,KAC7EoxB,EAAO,wBAA0BpxB,EAAE,6CAA6C,EAAI,KACpFoxB,EAAO,gBAAkBpxB,EAAE,4BAA2B,CAAI,SAAUixB,GAASG,EAAO,eAAe,CAAA,CAAA,EAAO,KAC1GA,EAAO,mBAAqBpxB,EAAE,wBAAuB,CAAI,SAAUixB,GAASG,EAAO,kBAAkB,CAAA,CAAA,EAAO,KAC5GA,EAAO,eAAiB,OAAqF,KAA5EpxB,EAAE,gCAA+B,CAAI,aAAcoxB,EAAO,YAAY,CAAA,EACvGA,EAAO,QAAU,WAAapxB,EAAE,iCAAiC,EAAI,KACrEoxB,EAAO,OAASpxB,EAAE,yBAAyB,EAAI,IAE9C,CAAA,CAAA,OAAO,OAAO,CAAA,CACd,KAAK,KAAK,EAET+4C,GAAgBprD,MAAAD,EAAY+d,EAAI,CAAA,EAAE,WAAS,CAAA,CAAA,E,CAIvC,IAAAgB,EAAO,GAAA,C,uBAEZ,IAAA1H,EAAMlY,GAAA,EAANmY,EAAAlX,EAAAiX,EAAM,EAAA,EAA6D3R,EAAA,GAAArF,EAAAiX,EAAAlC,CAAA,EAAA,KAAA9C,EAAE,cAAc,CAAA,CAAA,EAAnFxM,EAAA,QAAAuR,EAA6DgN,CAAG,EAAhElf,EAAA0P,EAAAwC,CAAM,C,UADJrX,EAAA63C,EAAO,IAAK,MAAIxhC,EAAAP,CAAA,C,WAFZV,EAAAnV,MAAAqS,EAAE,gBAAgB,CAAA,EAA9ByT,GAAIlR,EAAA,C,yBACO,U,mCAMT4Q,GAAOrL,EAAA,C,eAAW,OAAAoN,GAAS,K,uBAGzBlS,GAAOT,EAAA,CAAA,CAAA,C,iCAGU,IAAAO,EAAAnV,MAAAD,EAAA63C,EAAO,IAAK,GAAKvlC,EAAE,mBAAmB,EAAAtS,EAAImzB,CAAK,CAAA,CAAC,IAAI,EAAnExZ,EAAO9E,EAAA,C,qDACLJ,EAAGtU,EAAAogB,CAAA,EAAH5F,EAAApa,EAAAkU,CAAG,E,CAEO,IAAAW,EAAAnV,MAAAqS,EAAE,oBAAoB,CAAA,EAGhBmF,EAAAxX,MAAAqS,EAAE,gCAAgC,CAAA,EAJhD6S,EAAAxK,EAAA,C,qCAEQ,OAAA3a,EAAAmzB,CAAK,CAAA,CAAC,I,EACH,QAAA,GAAU3lB,GAAMpH,EAAM,cAAc,KAAK,E,+CAI5C,IAAAgP,EAAAnV,MAAAqS,EAAE,mBAAmB,CAAA,EAGlBmF,EAAAxX,MAAAD,EAAA63C,EAAO,IAAK,EAAE,EAJzB1yB,EAAArK,EAAA,C,yBAGiB,YAAAta,EAAA6wC,GAAa,EAAI,E,+HADjC,IAAA,OAAU,CAAE,OAAArxC,EAAAmzB,CAAK,CAAA,CAAC,G,EAAlB,IAAA,MAAU,EAAA,CAAE,EAAAA,CAAK,CAAA,CAAC,IAAGnU,C,IATxBrW,EAAA8L,CAAG,EAmBH,IAAA0F,EAAG7Z,EAnBHmU,EAAG,CAAA,EAoBD6F,EAAG/Z,EADL4Z,CAAG,EAEC3E,EAAIjV,EADN+Z,CAAG,EACD9C,EAAApX,EAAAoV,EAAI,EAAA,EACJqF,EAAGva,EADHkV,EAAI,CAAA,EACJwF,EAAAza,EAAAsa,CAAG,E,CACa,IAAAzF,EAAAnV,MAAAqS,EAAE,2BAA2B,CAAA,EAA3CouB,GAAM1lB,EAAA,C,yBAAwC,IAAA,SAAY,CAAE,OAAAhb,EAAAmzB,CAAK,CAAA,CAAC,M,EAApB,IAAA,QAAY,EAAA,CAAE,EAAAA,CAAK,CAAA,CAAC,OAAMnU,C,kCAGtEjE,EAAG5a,EAAAmpB,CAAA,EAAH3I,EAAApgB,EAAAwa,CAAG,E,CAEO,IAAA3F,EAAAnV,MAAAqS,EAAE,oCAAoC,CAAA,EAIhCmF,EAAAxX,MAAAqS,EAAE,gDAAgD,CAAA,EALhE6S,EAAAxE,EAAA,C,iGAEC,IAAA,OAAU,CAAE,OAAA3gB,EAAAmzB,CAAK,CAAA,CAAC,Y,EAAlB,IAAA,MAAU,EAAA,CAAE,EAAAA,CAAK,CAAA,CAAC,aAAYnU,C,IAM/B,IAAAG,EAAK7e,EAAAqgB,EAAA,CAAA,EACHxK,EAAI5V,EADN4e,CAAK,EACHD,EAAA9e,EAAA+V,EAAI,EAAA,EACJiqB,EAAM9/B,EADN6V,EAAI,CAAA,EACJtN,EAAAu3B,EAAM,OACE8C,GAAa,CAAK95B,EAAOmM,KAAQnM,GAAK,EAAA,IAAA,C,wBAApB,IAAAA,MAAMpJ,EAAAiW,CAAA,CAAA,CAAA,GAACV,MAAMvV,EAAAiW,CAAA,CAAA,CAAA,GACnC,IAAAqqB,EAAMjhC,GAAA,EAAN+f,EAAAhf,EAAAkgC,EAAM,EAAA,E,YAAU14B,EAAAwX,EAAA7J,EAAK,CAAA,EAAbgrB,KAAA,EAAAn3B,EAAK,KAAb,EAAM,OAAN,EAAM,QAAAm3B,IAAA,G,GAANp7B,EAAA0P,EAAAyrB,CAAM,C,GAFV33B,EAAAy3B,CAAM,EAAN74B,EAAA64B,CAAM,EAFRz3B,EAAAwW,CAAK,EASL,IAAAU,EAAKvf,EATL6e,EAAK,CAAA,EAUH6B,EAAIzgB,EADNsf,CAAK,EACHP,EAAAlf,EAAA4gB,EAAI,EAAA,EACJqrB,EAAM/rC,EADN0gB,EAAI,CAAA,EACJnY,EAAAwjC,EAAM,OACE0e,EAAW/qD,EAACmzB,CAAK,CAAA,CAAC,WAAW,GAAA,CAAM/pB,EAAOmM,KAAQnM,GAAK,EAAA,IAAA,C,wBAApB,IAAAA,MAAMpJ,EAAAk5B,CAAA,CAAA,CAAA,GAAC3jB,MAAMvV,EAAAk5B,CAAA,CAAA,CAAA,GACpD,IAAAoT,EAAMjtC,GAAA,EAANmgB,EAAApf,EAAAksC,EAAM,EAAA,E,YAAU1kC,EAAA4X,EAAAjK,EAAK,CAAA,EAAbg3B,KAAA,EAAAnjC,EAAK,KAAb,EAAM,OAAN,EAAM,QAAAmjC,IAAA,G,GAANpnC,EAAA0P,EAAAy3B,CAAM,C,GAFV3jC,EAAA0jC,CAAM,EAAN9kC,EAAA8kC,CAAM,EAFR1jC,EAAAkX,CAAK,EAlBPlX,EAAAoS,CAAG,EA4BH,IAAArG,EAACpU,EA5BDya,EAAG,CAAA,EA4BH2E,EAAAtf,EAAAsU,EAAC,EAAA,EAADoM,EAAAxgB,EAAAoU,EAAC,CAAA,E,MAGC,IAAA6K,EAACjgB,GAAA,EAADsgB,EAAArf,EAAAgf,CAAC,EACqCvK,G,GAAI,EAAA,C,2DAA8BtP,EAAA,GAAArF,EAAA0f,EAAA3K,CAAA,EAAA,KAAA9C,EAAE,uBAAuB,CAAA,CAAA,E,+BADjG3J,EAAA4W,CAAC,EACC7Z,EAAA,GAAArF,EAAAuf,EAAA,GAAAxK,GAAA,GAAA,EAAA,EAAA,KAAA9C,EAAE,8BAA8B,CAAA,CAAA,EADlCnN,EAAA0P,EAAA0K,CAAC,C,WADEvf,EAAAmzB,CAAK,CAAA,CAAC,eAAiB,QAAMnzB,EAAImzB,CAAK,CAAA,CAAC,eAAiB,SAAM,CAAAnzB,EAAM+d,EAAI,CAAA,CAAC,OAAO,OAAK1H,EAAAqE,CAAA,C,GAM1F,IAAAiH,EAAGrhB,EAAAwgB,EAAA,CAAA,EACDK,EAAI5gB,EADNohB,CAAG,EACD1B,EAAA7f,EAAA+gB,EAAI,EAAA,EAAJM,EAAAnhB,EAAA6gB,EAAI,CAAA,E,CAGQ,IAAA/L,EAAAnV,MAAAD,EAAA+d,EAAI,CAAA,CAAC,gBAAgB,OAAQ,GAAK,CAAM3P,EAAM,WAAW,QAAQ,CAAA,CAAA,EAF7EkV,GAAA7B,EAAA,C,YACQ,OAAAzhB,EAAAmzB,CAAK,CAAA,CAAC,Y,+BAEF,SAAA,GAAM,EAAMA,CAAK,CAAA,CAAC,aAAe3K,C,GAL/C7f,EAAAgZ,CAAG,E,gDA1B2BrP,EAAE,mCAAmC,MASrCA,EAAE,2BAA2B,MAS3CA,EAAE,gCAAgC,MAStBA,EAAE,6BAA6B,C,GA1BvD9K,EAAA44B,MAAMpgC,EAA6CmzB,CAAK,CAAA,CAAC,aAAY,GAAA,EAAlBA,CAAK,CAAA,CAAC,aAAYnU,CAAA,EASrExX,EAAA6kC,MAAMrsC,EAA6CmzB,CAAK,CAAA,CAAC,YAAW,GAAA,EAAjBA,CAAK,CAAA,CAAC,YAAWnU,CAAA,E,gBArBtEhf,EAAAmzB,CAAK,CAAA,CAAC,QAAM9c,EAAAuE,CAAA,C,iBA+CF,IAAAxF,EAAAnV,MAAAqS,EAAE,6BAA6B,CAAA,EAA7CouB,GAAM5e,EAAA,C,yBAA0C,IAAA,SAAY,CAAE,OAAA9hB,EAAAmzB,CAAK,CAAA,CAAC,M,EAApB,IAAA,QAAY,EAAA,CAAE,EAAAA,CAAK,CAAA,CAAC,OAAMnU,C,mCAGxE4K,EAACzpB,EAAAspB,CAAA,EAADvJ,EAAA9f,EAAAwpB,EAAC,EAAA,EAADF,EAAAppB,EAAAspB,EAAC,CAAA,E,MAIC,IAAAyN,EAAC/3B,GAAA,EAADshB,EAAArgB,EAAA82B,CAAC,EAECriB,G,GAAI,EAAA,C,2DAA8BtP,EAAA,GAAArF,EAAAwgB,EAAAzL,CAAA,EAAA,KAAA9C,EAAE,uBAAuB,CAAA,CAAA,E,+BAF7D3J,EAAA0uB,CAAC,EACC3xB,EAAA,GAAArF,EAAAugB,EAAA,GAAAxL,GAAA,GAAA,EAAA,EAAA,KAAA9C,EAAE,qCAAqC,CAAA,CAAA,EADzCnN,EAAA0P,EAAAwiB,CAAC,C,UADEr3B,EAAA+d,EAAI,CAAA,CAAC,OAAO,OAAK1H,EAAA6D,CAAA,C,GAFpBxU,EAAA,GAAArF,EAAA6f,EAAA9K,CAAA,EAAA,KAAA9C,EAAE,kCAAkC,CAAA,CAAA,E,eAStC,IAAAonB,EAACj6B,GAAA,EAADwhB,EAAA7gB,EAAAs5B,EAAC,EAAA,EACCh0B,EAAA,GAAArF,EAAA4gB,EAAA7L,CAAA,EAAA,KAAA9C,EAAE,mCAAmC,CAAA,CAAA,EADvCnN,EAAA0P,EAAA6kB,CAAC,C,UAXC15B,EAAAmzB,CAAK,CAAA,CAAC,OAAM9c,EAAA8J,EAAA,EAAAngB,EAUPmzB,CAAK,CAAA,CAAC,QAAM9c,EAAA0K,GAAA,CAAA,C,GA9DvBpY,EAAAkS,CAAG,EAFLlS,EAAA2R,CAAG,EAwEH,IAAA0H,EAAG1hB,EAxEHga,EAAG,CAAA,EAyEDiH,GAAIhhB,EADNyhB,CAAG,EACDZ,EAAAhhB,EAAAmhB,GAAI,EAAA,EACJ8I,GAAG/pB,EADHihB,GAAI,CAAA,EAEFiJ,GAAGjqB,EADL8pB,EAAG,EACDxhB,EAAA2hB,GAAG,OACK2gC,GAAc,CAAKnyB,EAAOzjB,KAAQyjB,GAAK,EAAA,IAAA,C,wBAApB,IAAAA,MAAMh5B,EAAAk8B,CAAA,CAAA,CAAA,GAAC3mB,MAAMvV,EAAAk8B,CAAA,CAAA,CAAA,GACpC,IAAAsG,EAAK9iC,GAAA,EACH2iB,EAAI9hB,EADNiiC,CAAK,EACHhhB,EAAAphB,EAAAiiB,EAAI,EAAA,EACJ6qB,EAAM5sC,EADN+hB,EAAI,CAAA,EACJxZ,EAAAqkC,EAAM,OACE/J,GAAQ,CAAK/5B,EAAOU,KAAOV,GAAK,EAAA,IAAA,C,wBAAnB,IAAAA,MAAMpJ,EAAAs8B,CAAA,CAAA,CAAA,GAACxyB,MAAK9J,EAAAs8B,CAAA,CAAA,CAAA,GAC7B,IAAA8Q,EAAM/tC,GAAA,EAANuiB,EAAAxhB,EAAAgtC,EAAM,EAAA,E,YAAUxlC,EAAAga,EAAA9X,EAAI,CAAA,EAAZujC,KAAA,EAAAjkC,EAAK,KAAb,EAAM,OAAN,EAAM,QAAAikC,IAAA,G,GAANloC,EAAA0P,EAAAu4B,CAAM,C,GAFVzkC,EAAAukC,CAAM,EAAN3lC,EAAA2lC,CAAM,EAFRvkC,EAAA65B,CAAK,EACuB98B,MAAArF,EAAAmhB,EAAAjM,EAAK,CAAA,CAAA,EAC/B/N,EAAA0lC,MAAMltC,EAA6CmzB,CAAK,CAAA,CAAC6F,EAAK,GAAA,GAAA,EAAX7F,CAAK,CAAA,CAAC6F,EAAK,GAAAha,CAAA,EAFhE7Z,EAAA0P,EAAA2tB,CAAK,C,GAFT75B,EAAA6hB,EAAG,EAaH,IAAAgL,GAAGl1B,EAbHkqB,GAAG,CAAA,EAaHX,GAAAtpB,EAAAi1B,EAAG,E,CACa,IAAApgB,EAAAnV,MAAAqS,EAAE,sCAAsC,CAAA,EAAtDouB,GAAM7W,GAAA,C,yBAAmD,IAAA,SAAY,CAAE,OAAA7pB,EAAAmzB,CAAK,CAAA,CAAC,a,EAApB,IAAA,QAAY,EAAA,CAAE,EAAAA,CAAK,CAAA,CAAC,cAAanU,C,oBAC5E,IAAA5J,EAAAnV,MAAAqS,EAAE,sCAAsC,CAAA,EAAtDouB,GAAM3W,GAAA,C,yBAAmD,IAAA,SAAY,CAAE,OAAA/pB,EAAAmzB,CAAK,CAAA,CAAC,a,EAApB,IAAA,QAAY,EAAA,CAAE,EAAAA,CAAK,CAAA,CAAC,cAAanU,C,IAF5FrW,EAAA6sB,EAAG,EAAH,IAAAtL,GAAA5pB,EAAAk1B,GAAG,CAAA,E,OAMD,IAAAwE,EAAC16B,GAAA,EAAD4iB,EAAA3hB,EAAAy5B,CAAC,EACqChlB,G,GAAI,EAAA,C,2DAA8BtP,EAAA,GAAArF,EAAA+hB,EAAAhN,CAAA,EAAA,KAAA9C,EAAE,uBAAuB,CAAA,CAAA,E,+BADjG3J,EAAAqxB,CAAC,EACCt0B,EAAA,GAAArF,EAAA6hB,EAAA,GAAA9M,GAAA,GAAA,EAAA,EAAA,KAAA9C,EAAE,8BAA8B,CAAA,CAAA,EADlCnN,EAAA0P,EAAAmlB,CAAC,C,WADCh6B,EAAAmzB,CAAK,CAAA,CAAC,QAAU,OAAKnzB,EAAImzB,CAAK,CAAA,CAAC,eAAa,CAAAnzB,EAAK+d,EAAI,CAAA,CAAC,OAAO,OAAK1H,EAAA6K,EAAA,C,GAnBxEvY,EAAA0hB,EAAG,EAFL1hB,EAAAqZ,CAAG,EA6BH,IAAAyT,GAAGn1B,EA7BH0hB,EAAG,CAAA,EA8BDwJ,GAAIjrB,EADNk1B,EAAG,EACDnT,GAAAliB,EAAAorB,GAAI,EAAA,EACJkK,GAAGp1B,EADHkrB,GAAI,CAAA,EAEFoK,GAAGr1B,EADLm1B,EAAG,EACD7sB,EAAA+sB,GAAG,OACKq1B,GAAK,CAAK7hD,EAAOmM,KAAQnM,GAAK,EAAA,IAAA,C,wBAApB,IAAAA,MAAMpJ,EAAAkuC,CAAA,CAAA,CAAA,GAAC34B,MAAMvV,EAAAkuC,CAAA,CAAA,CAAA,G,CAGjB,IAAA94B,EAAAnV,MAAAD,EAAAmzB,CAAK,CAAA,CAAC,aAAa,SAAS/pB,EAAK,CAAA,CAAA,EAF3Cs3B,GAAA7rB,EAAA,C,YACQ,OAAAU,EAAK,C,6BAED,SAAA,GAAE,EAAM4d,CAAK,CAAA,CAAC,aAAehV,GAAMne,EAACmzB,CAAK,CAAA,CAAC,aAAc/pB,EAAK,EAAE0hC,CAAE,C,MALjFniC,EAAAitB,EAAG,EAAH,IAAArL,GAAAjqB,EAAAs1B,GAAG,CAAA,E,OAWD,IAAAC,EAAGl2B,GAAA,EACD+iC,EAAKniC,EADPs1B,CAAG,EAECva,EAAK/a,EADPmiC,CAAK,EACHx7B,EAAAoU,CAAK,EAAL,IAAAkH,EAAAliB,EAAAgb,CAAK,EADP3S,EAAA+5B,CAAK,EAAL,IAAAhL,EAAAp3B,EAAAoiC,EAAK,CAAA,E,CAIS,IAAAttB,EAAAnV,MAAAqS,EAAE,qCAAqC,CAAA,EAArDouB,GAAMhJ,EAAA,C,yBAAkD,IAAA,SAAY,CAAE,OAAA13B,EAAAmzB,CAAK,CAAA,CAAC,qB,EAApB,IAAA,QAAY,EAAA,CAAE,EAAAA,CAAK,CAAA,CAAC,sBAAqBnU,C,wBAEjF,IAAA5J,EAAAnV,MAAAqS,EAAE,yCAAyC,CAAA,EAAzDouB,GAAM7rB,EAAA,C,yBAAsD,IAAA,SAAY,CAAE,OAAA7U,EAAAmzB,CAAK,CAAA,CAAC,gB,EAApB,IAAA,QAAY,EAAA,CAAE,EAAAA,CAAK,CAAA,CAAC,iBAAgBnU,C,MAD9F8O,EAAA7tB,MAAAD,EAAAmzB,CAAK,CAAA,CAAC,aAAa,SAAS,SAAS,CAAA,E,qBAN3CxqB,EAAAktB,CAAG,EAGCnwB,EAAA,GAAArF,EAAAmiB,EAAA,IAAApN,GAAA,IAAA,EAAA,KAAA9C,EAAE,kCAAkC,CAAA,CAAA,EADpCzK,EAAAyT,MAAKtb,EAA+DmzB,CAAK,CAAA,CAAC,gBAAe,GAAA,EAArBA,CAAK,CAAA,CAAC,gBAAenU,CAAA,EAF7F7Z,EAAA0P,EAAAghB,CAAG,C,EADDc,GAAA12B,MAAAD,EAAAmzB,CAAK,CAAA,CAAC,aAAa,SAAS,UAAU,CAAA,E,8CAcxC,IAAA2C,EAAGl2B,GAAA,EAAHu4B,EAAA53B,EAAAu1B,CAAG,E,CAEO,IAAA1gB,EAAAnV,MAAAqS,EAAE,qCAAqC,CAAA,EACrCmF,EAAAxX,MAAAD,EAAAmzB,CAAK,CAAA,CAAC,YAAc,IAAI,EAFlCuN,GAAAvI,EAAA,C,oDAGY,SAAA,GAAE,EAAMhF,CAAK,CAAA,CAAC,UAAY2X,EAAK,KAAO9qC,EAAAqrD,EAAgB,CAAA,CAAC,IAAK,GAAS5+C,EAAK,GAAG,C,uCAIjF5D,EAAAkwB,EAAA,OAAA/4B,EAAAqrD,EAAgB,EAAI,GAAU5Z,EAAS,KAAG,EAAtB,IAAQ,C,CAGtB,IAAAr8B,EAAAnV,MAAAD,EAAAmzB,CAAK,CAAA,CAAC,UAAU,SAAQnzB,EAACyxC,CAAQ,CAAA,CAAC,GAAG,CAAA,EAF/C/Q,GAAA7rB,EAAA,C,YACQ,OAAA7U,EAAAyxC,CAAQ,CAAA,CAAC,I,6BAEL,SAAA,GAAE,EAAMte,CAAK,CAAA,CAAC,UAAYhV,GAAMne,EAACmzB,CAAK,CAAA,CAAC,UAASnzB,EAAEyxC,CAAQ,CAAA,CAAC,IAAK3G,CAAE,C,sBAL9E9qC,EAAAmzB,CAAK,CAAA,CAAC,YAAc,MAAI9c,EAAA0L,CAAA,C,GAP9BpZ,EAAAmtB,CAAG,EAAH3wB,EAAA0P,EAAAihB,CAAG,C,EADD2B,GAAAx3B,MAAAD,EAAAmzB,CAAK,CAAA,CAAC,aAAa,SAAS,UAAU,GAAAnzB,EAAKqrD,EAAgB,CAAA,CAAC,MAAM,E,wBAxBxE1iD,EAAA+sB,EAAG,EAFL/sB,EAAA8sB,EAAG,EAgDH,IAAAO,GAAG11B,EAhDHm1B,GAAG,CAAA,EAiDDhK,GAAIlrB,EADNy1B,EAAG,EACDtT,GAAAtiB,EAAAqrB,GAAI,EAAA,EACJwK,GAAG31B,EADHmrB,GAAI,CAAA,EAEFyK,GAAG31B,EADL01B,EAAG,EACDptB,EAAAqtB,GAAG,OACKg1B,GAAM,CAAK9hD,EAAOmM,KAAQnM,GAAK,EAAA,IAAA,C,wBAApB,IAAAA,MAAMpJ,EAAAsrD,CAAA,CAAA,CAAA,GAAC/1C,MAAMvV,EAAAsrD,CAAA,CAAA,CAAA,G,CAGlB,IAAAl2C,EAAAnV,MAAAD,EAAAmzB,CAAK,CAAA,CAAC,cAAc,SAAS/pB,EAAK,CAAA,CAAA,EAF5Cs3B,GAAA7rB,EAAA,C,YACQ,OAAAU,EAAK,C,6BAED,SAAA,GAAE,EAAM4d,CAAK,CAAA,CAAC,cAAgBhV,GAAMne,EAACmzB,CAAK,CAAA,CAAC,cAAe/pB,EAAK,EAAE0hC,CAAE,C,MALnFniC,EAAAutB,EAAG,EAAH,IAAAsD,GAAAl5B,EAAA41B,GAAG,CAAA,E,CAUW,IAAA9gB,EAAAnV,MAAAqS,EAAE,sCAAsC,CAAA,EAAtDouB,GAAMlH,GAAA,C,yBAAmD,IAAA,SAAY,CAAE,OAAAx5B,EAAAmzB,CAAK,CAAA,CAAC,oB,EAApB,IAAA,QAAY,EAAA,CAAE,EAAAA,CAAK,CAAA,CAAC,qBAAoBnU,C,oBAEzF,IAAA5J,EAAAnV,MAAAqS,EAAE,kCAAkC,CAAA,EAD5CouB,GAAA9G,GAAA,C,yBAEC,IAAA,SAAY,CAAE,OAAA55B,EAAAmzB,CAAK,CAAA,CAAC,uB,EAApB,IAAA,QAAY,EAAA,CAAE,EAAAA,CAAK,CAAA,CAAC,wBAAuBnU,C,IAd9CrW,EAAAstB,EAAG,EAFLttB,EAAAqtB,EAAG,EAqBH,IAAAI,GAAG91B,EArBH01B,GAAG,CAAA,EAsBDtK,GAAInrB,EADN61B,EAAG,EACD3L,GAAArqB,EAAAsrB,GAAI,EAAA,EACJ2K,GAAG/1B,EADHorB,GAAI,CAAA,EAEF+K,GAAGl2B,EADL81B,EAAG,EAEC+V,GAAK7rC,EADPk2B,EAAG,EACDG,GAAAr2B,EAAA6rC,EAAK,EAEHkC,GAAMhuC,EAAAs2B,EAAA,EAAN/tB,EAAAylC,GAAM,OACEzqB,EAAQ+mC,EAAM5qD,EAAEmzB,CAAK,CAAA,CAAC,YAAY,GAAA,CAAM/pB,EAAOmM,KAAQnM,GAAK,EAAA,IAAA,C,wBAApB,IAAAA,MAAMpJ,EAAAurD,CAAA,CAAA,CAAA,GAACh2C,MAAMvV,EAAAurD,CAAA,CAAA,CAAA,GACzD,IAAAhd,EAAMlvC,GAAA,EAANy3B,EAAA12B,EAAAmuC,EAAM,EAAA,E,YAAU3mC,EAAAkvB,EAAAvhB,EAAK,CAAA,EAAbi2C,KAAA,EAAApiD,EAAK,KAAb,EAAM,OAAN,EAAM,QAAAoiD,IAAA,G,GAANrmD,EAAA0P,EAAA05B,CAAM,C,GAFV5lC,EAAA2lC,EAAM,EAAN/mC,EAAA+mC,EAAM,EAFR3lC,EAAAyjC,EAAK,EAQL,IAAAa,GAAK3sC,EARL8rC,GAAK,CAAA,EAQLlV,GAAA32B,EAAA0sC,EAAK,EAEHwe,GAAMnrD,EAAA42B,EAAA,EAANruB,EAAA4iD,GAAM,OACE5nC,EAAQ+mC,EAAM5qD,EAAEmzB,CAAK,CAAA,CAAC,YAAY,GAAA,CAAM/pB,EAAOmM,KAAQnM,GAAK,EAAA,IAAA,C,wBAApB,IAAAA,MAAMpJ,EAAA0rD,CAAA,CAAA,CAAA,GAACn2C,MAAMvV,EAAA0rD,CAAA,CAAA,CAAA,GACzD,IAAAjd,EAAMpvC,GAAA,EAAN83B,EAAA/2B,EAAAquC,EAAM,EAAA,E,YAAU7mC,EAAAuvB,EAAA5hB,EAAK,CAAA,EAAbm5B,KAAA,EAAAtlC,EAAK,KAAb,EAAM,OAAN,EAAM,QAAAslC,IAAA,G,GAANvpC,EAAA0P,EAAA45B,CAAM,C,GAFV9lC,EAAA8iD,EAAM,EAANlkD,EAAAkkD,EAAM,EAFR9iD,EAAAskC,EAAK,EATPtkC,EAAA8tB,EAAG,EAAH,IAAAqD,GAAAx5B,EAAAm2B,GAAG,CAAA,E,CAkBW,IAAArhB,EAAAnV,MAAAqS,EAAE,oCAAoC,CAAA,EAApDouB,GAAM5G,GAAA,C,yBAAiD,IAAA,SAAY,CAAE,OAAA95B,EAAAmzB,CAAK,CAAA,CAAC,uB,EAApB,IAAA,QAAY,EAAA,CAAE,EAAAA,CAAK,CAAA,CAAC,wBAAuBnU,C,IAClG,IAAAktB,GAAC5rC,EAAAw5B,GAAA,CAAA,EAAD1C,GAAAh3B,EAAA8rC,GAAC,EAAA,EApBHvjC,EAAA0tB,EAAG,EAFL1tB,EAAAytB,EAAG,EA4BH,IAAAkC,GAAGh4B,EA5BH81B,GAAG,CAAA,EA6BDzK,GAAIprB,EADN+3B,EAAG,EACDhB,GAAAl3B,EAAAurB,GAAI,EAAA,EACJ+M,GAAGp4B,EADHqrB,GAAI,CAAA,EAEFwN,GAAG54B,EADLm4B,EAAG,EAEC6U,GAAKhtC,EADP44B,EAAG,EACD5B,GAAAh3B,EAAAgtC,EAAK,EAEHoe,GAAMrrD,EAAAi3B,EAAA,EAAN1uB,EAAA8iD,GAAM,OACE9nC,EAAQ6mC,EAAS1qD,EAAEmzB,CAAK,CAAA,CAAC,eAAe,GAAA,CAAM/pB,EAAOmM,KAAQnM,GAAK,EAAA,IAAA,C,wBAApB,IAAAA,MAAMpJ,EAAA4rD,CAAA,CAAA,CAAA,GAACr2C,MAAMvV,EAAA4rD,CAAA,CAAA,CAAA,GAC/D,IAAAC,EAAMxsD,GAAA,EAANm4B,EAAAp3B,EAAAyrD,EAAM,EAAA,E,YAAUjkD,EAAA4vB,EAAAjiB,EAAK,CAAA,EAAbu2C,KAAA,EAAA1iD,EAAK,KAAb,EAAM,OAAN,EAAM,QAAA0iD,IAAA,G,GAAN3mD,EAAA0P,EAAAg3C,CAAM,C,GAFVljD,EAAAgjD,EAAM,EAANpkD,EAAAokD,EAAM,EAAN,IAAA3zB,GAAA13B,EAAAqrD,EAAM,EAFRhjD,EAAA4kC,EAAK,EASL,IAAAC,GAAKltC,EATLitC,GAAK,CAAA,EASLrV,GAAA33B,EAAAitC,EAAK,EAEHue,GAAMzrD,EAAA43B,EAAA,EAANrvB,EAAAkjD,GAAM,OACEloC,EAAQ8mC,EAAI3qD,EAAEmzB,CAAK,CAAA,CAAC,kBAAkB,GAAA,CAAM/pB,EAAOmM,KAAQnM,GAAK,EAAA,IAAA,C,wBAApB,IAAAA,MAAMpJ,EAAAgsD,CAAA,CAAA,CAAA,GAACz2C,MAAMvV,EAAAgsD,CAAA,CAAA,CAAA,GAC7D,IAAAC,EAAM5sD,GAAA,EAANk5B,EAAAn4B,EAAA6rD,EAAM,EAAA,E,YAAUrkD,EAAA2wB,EAAAhjB,EAAK,CAAA,EAAb22C,KAAA,EAAA9iD,EAAK,KAAb,EAAM,OAAN,EAAM,QAAA8iD,IAAA,G,GAAN/mD,EAAA0P,EAAAo3C,CAAM,C,GAFVtjD,EAAAojD,EAAM,EAANxkD,EAAAwkD,EAAM,EAAN,IAAAtzB,GAAAn4B,EAAAyrD,EAAM,EAFRpjD,EAAA6kC,EAAK,EAVP7kC,EAAAwwB,EAAG,EAoBH,IAAAgT,GAAC7rC,EApBD64B,GAAG,CAAA,EAoBHP,GAAAx4B,EAAA+rC,GAAC,EAAA,EArBHxjC,EAAA+vB,EAAG,EAFL/vB,EAAA2vB,EAAG,EAvML3vB,EAAAwR,CAAG,EAqOH,IAAA+f,GAAG55B,EArOH6Z,EAAG,CAAA,EAsOD5C,GAAAhX,EADF25B,EAAG,EACDpB,GAAA14B,EAAAmX,GAAA,EAAA,EAQA8H,GAAM/e,EARNiX,GAAA,CAAA,EAQA8hB,GAAAj5B,EAAAif,GAAM,EAAA,EATR1W,EAAAuxB,EAAG,E,kNACD,GAAA,SAAAuyB,E,sBApOuBn6C,EAAE,6BAA6B,MAwE/BA,EAAE,8BAA8B,MA6BhCA,EAAE,8BAA8B,MAgDhCA,EAAE,oCAAoC,MAqBtCA,EAAE,2BAA2B,MAI5CA,EAAE,4BAA4B,MAQ9BA,EAAE,2BAA2B,MAU/BA,EAAE,yBAAyB,MAMVA,EAAE,+BAA+B,MAIhDA,EAAE,6BAA6B,MAM/BA,EAAE,sCAAsC,MAGxCA,EAAE,kCAAkC,MAMpCA,EAAE,6BAA6B,MAIjCA,EAAE,6BAA6B,MAU1BtS,EAAA+W,CAAI,GAAA,CAAA/W,EAAKmzB,CAAK,CAAA,CAAC,IAAI,KAAI,GAAA,CAAAnzB,EAAOmzB,CAAK,CAAA,CAAC,KAAK,KAAI,MAGtDnzB,EAAA63C,EAAO,IAAK,GAAKvlC,EAAE,sBAAsB,EAAIA,EAAE,oBAAoB,MAEFA,EAAE,sBAAsB,C,GA7DnF9K,EAAA8mC,OAAMtuC,EAA6CmzB,CAAK,CAAA,CAAC,aAAY,GAAA,EAAlBA,CAAK,CAAA,CAAC,aAAYnU,CAAA,EAQrExX,EAAAikD,OAAMzrD,EAA6CmzB,CAAK,CAAA,CAAC,aAAY,GAAA,EAAlBA,CAAK,CAAA,CAAC,aAAYnU,CAAA,EAoBrExX,EAAAmkD,OAAM3rD,EAA6CmzB,CAAK,CAAA,CAAC,gBAAe,GAAA,EAArBA,CAAK,CAAA,CAAC,gBAAenU,CAAA,EASxExX,EAAAukD,OAAM/rD,EAA6CmzB,CAAK,CAAA,CAAC,mBAAkB,GAAA,EAAxBA,CAAK,CAAA,CAAC,mBAAkBnU,CAAA,EAgBnFlZ,EAAA,QAAAyR,GAIUrI,EAAI,EAIdpJ,EAAA,QAAAuZ,GAA2DyJ,EAAK,E,yCAnQlE9oB,EAAA63C,EAAO,IAAK,MAAIxhC,EAAAwgB,CAAA,C,gBAwQpBld,EAAO2gB,EAAA,C,yCAEH,IAAAyT,EAAC+b,GAAA,EAADvwB,EAAAn5B,EAAA2tC,EAAC,EAAA,EAA6BroC,EAAA,GAAArF,EAAAk5B,EAAAnkB,CAAA,EAAA,KAAA9C,EAAE,qBAAqB,CAAA,CAAA,EAArDnN,EAAA0P,EAAAk5B,CAAC,C,UADC/tC,EAAA+d,EAAI,CAAA,CAAC,OAAO,SAAW,GAAC1H,EAAA4gB,CAAA,C,gBAItBpuB,EAAAmyB,EAAA,OAAAh7B,EAAA+d,EAAI,CAAA,CAAC,OAAU,GAAQ2lB,EAAO,KAAG,EAAlB,IAAM,CACzB,IAAAtI,EAAG+uB,GAAA,EACDluB,EAAG17B,EADL66B,CAAG,EAEC3L,EAAIlvB,EADN07B,CAAG,EACDtC,EAAAp5B,EAAAkvB,CAAI,E,aAEkB,IAAA+I,EAAIuxB,GAAA,EAAJ9vB,EAAA75B,EAAAo4B,EAAI,EAAA,EAAuC9yB,EAAA,GAAArF,EAAA45B,EAAA7kB,CAAA,EAAA,KAAA9C,EAAE,uBAAuB,CAAA,CAAA,EAApEnN,EAAA0P,EAAA2jB,CAAI,C,UAApBx4B,EAAA0jC,CAAM,CAAA,CAAC,SAAOrtB,EAAA0gB,CAAA,C,GAFpBpuB,EAAA8mB,CAAI,EAIJ,IAAA2J,EAAI94B,EAJJmvB,EAAI,CAAA,EAIJ2K,EAAAh6B,EAAAg5B,EAAI,EAAA,EAAJsC,EAAAp7B,EAAA84B,EAAI,CAAA,E,MAEF,IAAAe,EAAI8vB,GAAA,EAAJxvB,EAAAl6B,EAAA45B,CAAI,E,OAEItxB,EAAAkzB,EAAA,OAAA/7B,EAAA0jC,CAAM,CAAA,CAAC,QAAW,GAAevyB,EAAO,UAAQ,EAA9B,EAAM,IAAA,C,iCACY,IAAAiE,EAAAnV,MAAA,YAAAD,EAAAmR,CAAM,CAAA,CAAC,UAAQ,EAApC6D,GAAIynB,EAAA,C,kEAAkD/2B,MAAArF,EAAA06B,EAAA/6B,EAAAmR,CAAM,CAAA,CAAC,IAAI,CAAA,E,+BAApFzL,MAAArF,EAAAw6B,EAAA76B,EAAAsG,CAAK,EAAG,KAAO,EAAE,CAAA,E,SAHrBqC,EAAAwxB,CAAI,EACFz0B,EAAA,GAAArF,EAAAo6B,EAAA,GAAArlB,GAAA,GAAA,EAAA,EAAA,KAAA9C,EAAE,uBAAuB,CAAA,CAAA,EAD3BnN,EAAA0P,EAAAslB,CAAI,C,UADFn6B,EAAA0jC,CAAM,CAAA,CAAC,QAAQ,QAAMrtB,EAAAigB,CAAA,C,GAN3B3tB,EAAAszB,CAAG,EAgBH,IAAAI,EAAG/7B,EAhBH27B,EAAG,CAAA,EAiBDtc,EAAMpf,EADR87B,CAAG,EACDlB,EAAA/6B,EAAAuf,EAAM,EAAA,EAANwd,EAAA78B,EAAAqf,EAAM,CAAA,E,MAEJ,IAAAK,EAAAkqC,GAAA,EAAA5uB,EAAAl7B,EAAA4f,EAAA,EAAA,EAWEta,EAAA,GAAArF,EAAAi7B,EAAAlmB,CAAA,EAAA,KAAA9C,EAAE,uBAAuB,CAAA,CAAA,EAX3BxM,EAAA,QAAAka,MAIG2O,GACE,sBAAqB3uB,EACrB0jC,CAAM,EACNpxB,EAAE,2BAA0B,CAAI,KAAItS,EAAE0jC,CAAM,CAAA,CAAC,IAAI,CAAA,EACjDpxB,EAAE,2BAA0B,CAAI,KAAItS,EAAE0jC,CAAM,CAAA,CAAC,IAAI,CAAA,CAAA,CAAA,EARtDv+B,EAAA0P,EAAAmL,CAAA,C,UADGhgB,EAAA0jC,CAAM,CAAA,CAAC,SAAOrtB,EAAA0hB,CAAA,C,GAFrBpvB,EAAA0zB,CAAG,EAjBL1zB,EAAAyyB,CAAG,E,UAGGxzB,EAAA+xB,EAAA,GAAA35B,EAAA0jC,CAAM,CAAA,CAAC,MAAI,GAAA,EAAA,E,eAGM,KAAAvH,GAAOn8B,EAAC0jC,CAAM,CAAA,MAYqCpxB,EAAE,oBAAoB,CAAA,C,EAA5FxM,EAAA,QAAA6Z,MAAuDw4B,GAAIn4C,EAAC0jC,CAAM,CAAA,CAAA,EAlBtEv+B,EAAA0P,EAAAumB,CAAG,C,sEAwCA71B,EAAAo4B,MAAA39B,EAAA+d,EAAI,EAAA,GAAA,CACP+qC,GAAWj0C,EAAA,C,4CAFX7U,EAAA63C,EAAO,IAAK,MAAIxhC,EAAAgiB,CAAA,C,uBAOH,IAAAjjB,EAAAnV,MAAAqS,EAAE,yBAAyB,CAAA,EAA1CqH,EAAO9E,EAAA,C,2DACChM,EAAAm1B,EAAA,OAAAh+B,EAAA+d,EAAI,CAAA,CAAC,SAAY,GAAQ2lB,EAAO,KAAG,EAAlB,IAAM,CAC3B,IAAA/G,EAAG0tB,GAAA,EACDhwB,EAAI95B,EADNo8B,CAAG,EACDnB,EAAAp7B,EAAAi6B,EAAI,EAAA,EACJ9Q,EAAAjpB,EADA+5B,EAAI,CAAA,EACJuB,EAAAx7B,EAAAmpB,EAAA,EAAA,EAFF5gB,EAAAg0B,CAAG,E,MACqB/0B,EAAA4zB,EAAAx7B,EAAA0jC,CAAM,CAAA,CAAC,IAAI,E,QAM/B,KAAApxB,EAAE,2BAA2B,CAAA,C,EAL/BxM,EAAA,QAAAyjB,MAGgBoF,GAAI,sBAAqB3uB,EAAE0jC,CAAM,EAAEpxB,EAAE,oBAAmB,CAAI,KAAItS,EAAE0jC,CAAM,CAAA,CAAC,IAAI,CAAA,CAAA,CAAA,EAL/Fv+B,EAAA0P,EAAA8nB,CAAG,C,4CAHL38B,EAAA+d,EAAI,CAAA,CAAC,SAAS,QAAM1H,EAAAojB,CAAA,C,mBA9TtBz5B,EAAAud,EAAO,GAAA,CAAAvd,EAAK+d,EAAI,EAAA1H,EAAAgE,CAAA,EAAAra,EAEX+d,EAAI,GAAA1H,EAAA0jB,EAAA,CAAA,C,gDAbR,C,+uCC7QR,SAAAszB,GAAA,EAAA,EAAA,C,QAUE,IAYM7lC,EAAW5P,GAAc,EAE3BmG,EAAO1c,EAAO,IAAI,EAClBkU,EAAQlU,EAAO,EAAE,EACjBkN,EAAWlN,EAAO,EAAE,EACpBisD,EAASjsD,EAAO,IAAI,EAExB,eAAeyc,GAAO,CACpB,GAAI,CACFrX,EAAAsX,EAAO,MAAKnJ,EAAA,IAAK,MAAM;;;;;;;;;;GAAK,EAAA,EAAA,CAC9B,OAASkD,EAAQ,CACf0P,EAAS,MAAM1P,CAAM,CACvB,CACF,CAEAgG,EAAI,EAEJ,eAAeyvC,GAAQ,CACrB,IAAMhvC,EAAO,MAAMiJ,EAAS,YAAO5S,EAAA,IAC7B,M;;W,CAIA,MAAKtT,EAAEiU,CAAK,CAAA,CAAC,KAAI,EAAI,SAAQjU,EAAEiN,CAAQ,GAAI,I,IAI5CgQ,IAEL9X,EAAA6mD,EAAS/uC,EAAK,oBAAmB,EAAA,EACjC9X,EAAA8O,EAAQ,EAAE,EACV9O,EAAA8H,EAAW,EAAE,EAEb,MAAMuP,EAAI,EACZ,CAEA,eAAe7M,EAAO,EAAY,CAC3B,QAAQqB,EAAE,sBAAqB,CAAI,MAAOk7C,EAAW,KAAK,CAAA,CAAA,GAU3D,MARehmC,EAAS,YAAO5S,EAAA,IAE3B,MAAK,wFAAA,CACP,GAAI44C,EAAW,EAAE,CAAA,EAErBl7C,EAAE,eAAc,CAAI,MAAOk7C,EAAW,KAAK,CAAA,CAAA,GAGnC,MAAM1vC,EAAI,CACtB,CAEA,eAAe84B,EAAM,EAAa,CAY5B,MAXepvB,EAAS,YAEpB5S,EAAA,IAAA,M;;aAIA,CAAA,aAAW,C,EAEjBtC,EAAE,oBAAoB,C,GAGd,MAAMwL,EAAI,CACtB,CAEA,eAAe2vC,EAAa,EAAkB,CAYxC,MAXejmC,EAAS,YAEpB5S,EAAA,IAAA,M;;aAIA,CAAA,kBAAgB,C,EAEtBtC,EAAE,oBAAoB,C,GAGd,MAAMwL,EAAI,CACtB,C,CAGkB,IAAA1I,EAAA7T,MAAA+Q,EAAE,YAAY,CAAA,EAAYmF,EAAAlW,MAAA,GAAA+Q,EAAE,WAAW,EAAA,GAAKA,EAAE,iBAAiB,GAAA,EAAlFqH,EAAO9E,EAAA,C,2FACL4Q,GAAO9Q,EAAA,C,eAAW,OAAA6S,EAAS,K,0CAGX,IAAApS,EAAA7T,MAAA+Q,EAAE,eAAe,CAAA,EAA/BouB,GAAMlmB,EAAA,C,uCAAqC,OAAAlZ,EAAAyc,CAAI,CAAA,CAAC,OAAO,W,EAAuB,SAAA64B,C,iCAG5EnY,EAAEj9B,EAAAm+B,CAAA,EACAf,EAAEl9B,EADJ+8B,CAAE,EACA30B,EAAAnI,EAAAi9B,EAAE,EAAA,EACFC,EAAEp9B,EADFm9B,EAAE,CAAA,EACErzB,EAAI7J,EAARm9B,CAAE,EAAEvnB,EAAA3V,EAAA4J,EAAI,EAAA,EAAR5C,EAAAk2B,CAAE,EACF,IAAA6uB,EAAEjsD,EADFo9B,EAAE,CAAA,EACFrnB,EAAA7V,EAAA+rD,EAAE,EAAA,EACFC,EAAElsD,EADFisD,EAAE,CAAA,EACEjuC,EAAI/d,EAARisD,CAAE,EAAEzuC,EAAAvd,EAAA8d,EAAI,EAAA,EAAR9W,EAAAglD,CAAE,EAJJhlD,EAAA81B,CAAE,EAAF,IAAA9jB,EAAAlZ,EAAAg9B,EAAE,CAAA,E,MAQA,IAAA/pB,EAAC9T,GAAA,EAADwe,EAAAzd,EAAA+S,EAAC,EAAA,EAAehP,EAAA,GAAA9D,EAAAwd,EAAAhK,CAAA,EAAA,KAAA9C,EAAE,yBAAyB,CAAA,CAAA,EAA3CnN,EAAA0P,EAAAH,CAAC,C,UADCpT,EAAAyc,CAAI,CAAA,CAAC,eAAa1H,EAAAP,CAAA,C,sBAKpB,IAAA0O,EAAExjB,GAAA,EAAF6H,EAAA2b,EAAE,OAAAljB,EACMyc,CAAI,CAAA,CAAC,gBAAmB,GAAYyvC,EAAW,IAAE,EAAzB,IAAU,CACtC,IAAA/oC,EAAE1jB,GAAA,EACA0T,EAAG/S,EADL+iB,CAAE,EAEEtK,EAAGzY,EADL+S,CAAG,EACD6K,EAAA3d,EAAAwY,EAAG,EAAA,EACHuc,EAAIj1B,EADJ0Y,EAAG,CAAA,EACHqF,EAAA7d,EAAA+0B,EAAI,EAAA,EAAJ1b,EAAAvZ,EAAAi1B,EAAI,CAAA,E,MAEF,IAAApc,EAAGxZ,GAAA,EAAH4e,EAAA/d,EAAA2Y,EAAG,EAAA,E,iBAAehI,EAAE,uBAAsB,CAAI,KAAIhR,EAAEksD,CAAU,CAAA,CAAC,OAAO,IAAI,CAAA,C,GAA1EroD,EAAA0P,EAAAyF,CAAG,C,UADDhZ,EAAAksD,CAAU,CAAA,CAAC,QAAMn3C,EAAAgE,CAAA,C,GAGrB,IAAAQ,EAAGpZ,EAAAuZ,EAAA,CAAA,EAAH4E,EAAAje,EAAAkZ,EAAG,EAAA,EANLlS,EAAA8L,CAAG,EAUH,IAAA4C,EAAM5V,EAVNgT,EAAG,CAAA,EAUHsL,EAAApe,EAAA0V,EAAM,EAAA,EAXR1O,EAAA8b,CAAE,E,UAEmC7c,EAAA0X,EAAAhe,EAAAksD,CAAU,CAAA,CAAC,KAAK,EACF5lD,EAAA4X,EAAAle,EAAAksD,CAAU,CAAA,CAAC,MAAM,E,oBAK9Dl7C,EAAE,wBAAuB,CAAI,KAAMwG,GAAKxX,EAACksD,CAAU,CAAA,CAAC,OAAQl7C,EAAE,wBAAwB,CAAA,C,OAIxFA,EAAE,yBAAyB,C,GAD7BxM,EAAA,QAAAuR,MAAyEpG,EAAM3P,EAACksD,CAAU,CAAA,CAAA,EAX5FroD,EAAA0P,EAAA4P,CAAE,C,GAFN9b,EAAA6b,CAAE,EAAFrf,EAAA0P,EAAA2P,CAAE,C,UADAljB,EAAAyc,CAAI,CAAA,CAAC,gBAAgB,QAAM1H,EAAAqE,CAAA,C,GAsB/B,IAAAnI,EAAA9Q,EAAAqZ,EAAA,CAAA,EAOEQ,GAAK5Z,EAPP6Q,CAAA,EAOErL,EAAAoU,EAAK,EACL,IAAA8kB,EAAM3+B,EADN6Z,GAAK,CAAA,EAEHglB,EAAM5+B,EADR0+B,CAAM,EACJngB,GAAAte,EAAA2+B,EAAM,EAAA,EAAN,EAAM,MAAN,EAAM,QAAA,GAAN,IAAAhgB,GAAA7e,EAAA6+B,CAAM,EACAz3B,EAAAyX,GAAA,OAAAhf,EAAAyc,CAAI,CAAA,CAAC,QAAW,GAAQ5M,EAAO,UAAQ,EAAvB,IAAM,CAC1B,IAAAm7B,EAAMrrC,GAAA,EAANif,EAAAve,EAAA2qC,EAAM,EAAA,E,YAA0B1kC,EAAAsY,EAAA5e,EAAA6P,CAAM,CAAA,CAAC,IAAI,EAA7Bo7B,KAAA,EAAAjrC,EAAA6P,CAAM,CAAA,CAAC,YAArB,EAAM,OAAN,EAAM,QAAAo7B,IAAA,G,GAANpnC,EAAA0P,EAAAy3B,CAAM,C,GAHV3jC,EAAAy3B,CAAM,EAAN74B,EAAA64B,CAAM,EAMN,IAAA7oB,EAAM9V,EANN2+B,EAAM,CAAA,EAMNxf,EAAAjf,EAAA4V,EAAM,EAAA,EAdR5O,EAAA4J,CAAA,EAgBA,IAAAgN,GAAC9d,EAhBD8Q,EAAA,CAAA,EAgBAsO,GAAAlf,EAAA4d,GAAC,EAAA,EACDqK,EAACnoB,EADD8d,GAAC,CAAA,EACD0B,GAAAtf,EAAAioB,EAAC,EAAA,EAADjJ,EAAAlf,EAAAmoB,EAAC,CAAA,E,OAGC,IAAA7O,EAAG7Z,GAAA,EACDsU,EAAI9T,EADNqZ,CAAG,EACDqG,EAAAzf,EAAA6T,EAAI,EAAA,EACJW,EAAI1U,EADJ+T,EAAI,CAAA,EACJgM,EAAA7f,EAAAwU,EAAI,EAAA,EACJy3C,EAAInsD,EADJ0U,EAAI,CAAA,EACJyL,EAAAjgB,EAAAisD,EAAI,EAAA,EACJ5sC,EAAIvf,EADJmsD,EAAI,CAAA,EACJ1rC,EAAAvgB,EAAAqf,EAAI,EAAA,EACJ6sC,EAAIpsD,EADJuf,EAAI,CAAA,EACJoB,EAAAzgB,EAAAksD,EAAI,EAAA,EALNllD,EAAAoS,CAAG,E,0BAGyCnT,EAAAga,EAAAtgB,EAAAgsD,CAAM,CAAA,CAAC,eAAe,MAAM,E,OAE5B1lD,EAAAwa,EAAA9gB,EAAAgsD,CAAM,CAAA,CAAC,MAAM,C,OAJ7Bh7C,EAAE,yBAAyB,MAC/BA,EAAE,sBAAsB,MAExBA,EAAE,qBAAqB,C,GAJ/CnN,EAAA0P,EAAAkG,CAAG,C,UADDzZ,EAAAgsD,CAAM,GAAAj3C,EAAAuE,EAAA,C,kBAUI,IAAAxF,EAAA7T,MAAA+Q,EAAE,0BAA0B,CAAA,EAA1CouB,GAAM5f,GAAA,C,uCAAgD,OAAAxf,EAAAyc,CAAI,CAAA,CAAC,OAAO,gB,EAA4B,SAAA0vC,C,GAC9F,IAAAp2B,GAAC51B,EAAAqf,GAAA,CAAA,EAADwB,GAAA3gB,EAAA01B,GAAC,EAAA,E,iDA3D+CzvB,EAAAsX,EAAA5d,EAAAyc,CAAI,CAAA,CAAC,UAAU,EAoC7D1W,EAAAiU,GAAK,aAAA3D,CAAA,EACLtQ,EAAA+4B,EAAM,aAAA7P,CAAA,E,QAMN,EAAM,SAAAod,E,qCA9CkBr7B,EAAE,sBAAsB,MACZA,EAAChR,EAACyc,CAAI,CAAA,CAAC,QAAU,qBAAuB,oBAAmB,CAAI,KAAIzc,EAAEyc,CAAI,CAAA,CAAC,QAAQ,CAAA,MAC9FzL,EAAE,sBAAsB,MAqCmBA,EAAE,oBAAoB,MACnBA,EAAE,kBAAkB,MACvEA,EAAE,qBAAqB,MAKmB,CAAAhR,EAAAiU,CAAK,CAAA,CAAC,KAAI,MAAKjD,EAAE,oBAAoB,MAEpFA,EAAE,mBAAmB,MACrBA,EAAE,uBAAuB,MAazBA,EAAE,iBAAiB,C,GA9BnClM,EAAA,SAAAmM,EAEY,GAAU,CACnBnM,EAAM,eAAc,EACpBmnD,EAAK,CACP,CAAC,EAEA1lD,EAAAyT,OAAKha,EAA0HiU,CAAK,EAAA,GAAA1T,EAAL0T,EAAKyJ,CAAA,CAAA,EACpIxX,EAAA44B,MAAM9+B,EAAmGiN,CAAQ,EAAA,GAAA1M,EAAR0M,EAAQyQ,CAAA,CAAA,E,gBA1CjH1d,EAAAyc,CAAI,CAAA,CAAC,OAAO,aAAW1H,EAAA6D,CAAA,C,mBAHzB5Y,EAAAyc,CAAI,GAAA1H,EAAA8J,CAAA,C,qCALH,C,64BCrGR,SAAAkuC,GAAA,EAAA,EAAA,C,QAWE,IAQM3D,EAAS,CAAA,CACZ,GAAI,OAAO,EAAA,CACX,GAAI,SAAS,EAAA,CACb,IAAK,MAAM,CAAA,EAKRljC,EAAW5P,GAAc,EAE3BmG,EAAOxb,EAAO,IAAI,EAClBgT,EAAQhT,EAAO,EAAE,EACjB2N,EAAe3N,EAAO,EAAE,EACxB+rD,EAAW/rD,EAAO,EAAE,EACpB+qD,EAAS/qD,EAAO,IAAI,EAExB,eAAeub,GAAO,CACpB,GAAI,CACFrX,EAAAsX,EAAO,MAAKnJ,EAAA,IAAK,MAAM;;;;;;GAAK,EAAA,EAAA,CAC9B,OAASkD,EAAQ,CACf0P,EAAS,MAAM1P,CAAM,CACvB,CACF,CAEAgG,EAAI,EAEJ,eAAeyvC,GAAQ,CACrB,IAAMhvC,EAAO,MAAMiJ,EAAS,YAAO5S,EAAA,IAC7B,M;;W,CAIA,MAAKpS,EAAE+S,CAAK,CAAA,CAAC,KAAI,GAAM,eAAgB,UAAS/S,EAAE8rD,CAAQ,EAAG,MAAK,aAAY9rD,EAAE0N,CAAY,GAAI,I,IAIjGqO,IAEL9X,EAAA6mD,EAAS/uC,EAAK,uBAAsB,EAAA,EACpC9X,EAAA8O,EAAQ,EAAE,EAEV,MAAMuI,EAAI,EACZ,CAEA,eAAe7M,EAAO,EAAO,CACtB,QAAQqB,EAAE,8BAA6B,CAAI,MAAOpF,EAAM,KAAK,CAAA,CAAA,GAW9D,MATesa,EAAS,YAAO5S,EAAA,IAE3B,MAAK,8FAAA,CAEL,GAAI1H,EAAM,EAAE,CAAA,EAElBoF,EAAE,uBAAsB,CAAI,MAAOpF,EAAM,KAAK,CAAA,CAAA,GAGtC,MAAM4Q,EAAI,CACtB,C,CAGkB,IAAA1I,EAAA3S,MAAA6P,EAAE,oBAAoB,CAAA,EAAYmF,EAAAhV,MAAA,GAAA6P,EAAE,mBAAmB,EAAA,GAAKA,EAAE,2BAA2B,GAAA,EAA5GqH,EAAO9E,EAAA,C,2FACL4Q,GAAO9Q,EAAA,C,eAAW,OAAA6S,EAAS,K,kCAGzB/S,EAAG/R,EAAA0jB,CAAA,EACD5Q,EAAI5S,EADN6R,CAAG,EACD3K,EAAAjH,EAAA2S,EAAI,EAAA,EACJjK,EAAI5I,EADJ6S,EAAI,CAAA,EACJ8B,EAAAzU,EAAA0I,EAAI,EAAA,EAFN5C,EAAA8L,CAAG,EAAH,IAAA+F,EAAA7X,EAAA8R,EAAG,CAAA,E,MAMD,IAAA+P,EAAEtiB,GAAA,EAAF2G,EAAA2b,EAAE,OAAAhiB,EACMub,CAAI,CAAA,CAAC,mBAAsB,GAAO7Q,EAAM,IAAE,EAAf,IAAK,CACpC,IAAAuX,EAAExiB,GAAA,EACAkY,EAAGvX,EADL6hB,CAAE,EAEEnK,EAAG1X,EADLuX,CAAG,EACD3C,EAAA5U,EAAA0X,EAAG,EAAA,E,aACoC,IAAAnE,EAAIpU,GAAA,EAAJmd,EAAArc,EAAAsT,CAAI,EAAkBzQ,MAAA5C,EAAAoc,EAAA,KAAA1c,EAAA0K,CAAK,CAAA,CAAC,aAAa,MAAI,IAAA,CAAA,EAA7C/H,EAAA0P,EAAAsB,CAAI,C,UAAxB3T,EAAA0K,CAAK,CAAA,CAAC,cAAYmJ,EAAAP,CAAA,C,GADrCnN,EAAA2R,CAAG,EAGH,IAAAO,EAAGlY,EAHH2X,EAAG,CAAA,EAGH8E,EAAAvc,EAAAgY,EAAG,EAAA,EAJLlS,EAAAwR,CAAG,EAiBH,IAAA9C,EAAM1U,EAjBNwX,EAAG,CAAA,EAiBHmF,EAAAzc,EAAAwU,EAAM,EAAA,EAlBR1O,EAAA8b,CAAE,E,UAGI7c,EAAA4P,EAAAhV,EAAA0K,CAAK,CAAA,CAAC,KAAK,E,oBAGX1K,EAAA0K,CAAK,CAAA,CAAC,SACHoF,EAAE,gCAA+B,CAC/B,WAAU9P,EAAE0K,CAAK,CAAA,CAAC,SAAS,WAC3B,KAAM4L,GAAKtW,EAAC0K,CAAK,CAAA,CAAC,OAAQoF,EAAE,2BAA2B,CAAA,EACvD,QAASsG,GAAGpW,EAAC0K,CAAK,CAAA,CAAC,SAAS,C,GAE9BoF,EAAE,6BAA4B,CAC5B,KAAMwG,GAAKtW,EAAC0K,CAAK,CAAA,CAAC,OAAQoF,EAAE,2BAA2B,CAAA,EACvD,QAASsG,GAAGpW,EAAC0K,CAAK,CAAA,CAAC,SAAS,C,OAIoDoF,EAAE,4BAA4B,C,GAAvHxM,EAAA,QAAAuR,MAAyEpG,EAAMzO,EAAC0K,CAAK,CAAA,CAAA,EAlBvF/H,EAAA0P,EAAA4P,CAAE,C,GAFN9b,EAAA6b,CAAE,EAAFrf,EAAA0P,EAAA2P,CAAE,C,UADAhiB,EAAAub,CAAI,CAAA,CAAC,mBAAmB,QAAM1H,EAAAgE,CAAA,C,GA2BlC,IAAA9H,EAAA5P,EAAA6X,EAAA,CAAA,EAOEc,EAAK1Y,EAPP2P,CAAA,EAOErL,EAAAoU,CAAK,EAAL,IAAAX,EAAAhY,EAAA2Y,EAAK,CAAA,E,OAII,IAAAlG,EAAA3S,MAAA6P,EAAE,iCAAiC,CAAA,E,SAGtC,CAAA,GAAIA,EAAE,oCAAoC,CAAA,EACxC,GAAA9P,EAAAub,CAAI,CAAA,CAAC,cAAc,IAAK,GAAI,CAAMtR,EAAK,IAAK6F,EAAE,oCAAmC,CAAI,KAAM7F,EAAK,IAAI,CAAA,C,KAL1G0zB,GAAAtrB,EAAA,C,oCAEQ,OAAArS,EAAA0N,CAAY,C,6BAKR,SAAA,GAAGnN,EAAMmN,EAAe3K,EAAG,EAAA,C,aARrC/C,EAAAub,CAAI,CAAA,CAAC,cAAc,QAAM1H,EAAAqE,CAAA,C,GAY7B,IAAAK,EAAGpY,EAAAgY,EAAA,CAAA,EAAH9R,EAAAkS,EAAG,OACK2vC,GAAS,CAAKpR,EAAM5rC,KAAO4rC,GAAI,EAAA,IAAA,C,wBAAjB,IAAAA,MAAK92C,EAAAyT,CAAA,CAAA,CAAA,GAACvI,MAAKlL,EAAAyT,CAAA,CAAA,CAAA,GAC7B,IAAAsB,EAAMpV,GAAA,EAANqd,EAAA3c,EAAA0U,EAAM,EAAA,E,MAANlQ,EAAAkQ,EAAM,eAAA/U,EAA6B8rD,CAAQ,IAAKhV,EAAI,CAAA,E,QAClD,KAAAhnC,EAAC,0BAA2B5E,EAAI,GAAA,CAAA,C,EADlC5H,EAAA,QAAAyR,MAAMxU,EAAgEurD,EAAWhV,EAAI,EAAA,EAAA,CAAA,EAArFn0C,EAAA0P,EAAA0C,CAAM,C,GAFV5O,EAAAoS,CAAG,EAQH,IAAAsE,EAAM1c,EARNoY,EAAG,CAAA,EAQH2E,EAAA7c,EAAAwc,EAAM,EAAA,EA7BR1W,EAAA4J,CAAA,EAAA,IAAAuI,EAAAnY,EAAA4P,EAAA,CAAA,E,MAiCE,IAAAoP,EAAGvf,GAAA,EACD4e,EAAIpe,EADN+e,CAAG,EACD/B,EAAA/c,EAAAme,EAAI,EAAA,EACJvB,EAAI9c,EADJqe,EAAI,CAAA,EACJjB,EAAAld,EAAA4c,EAAI,EAAA,EAFN9W,EAAAgZ,CAAG,E,aAEyC/Z,EAAAmY,EAAAvd,EAAA8qD,CAAM,CAAA,CAAC,MAAM,C,EAD7B,KAAAh7C,EAAE,iCAAiC,CAAA,C,EAD/DnN,EAAA0P,EAAA8M,CAAG,C,UADDnf,EAAA8qD,CAAM,GAAAj3C,EAAAuE,CAAA,C,wBA9DiDhT,EAAA0P,EAAA9U,EAAAub,CAAI,CAAA,CAAC,WAAW,EAqCzE1W,EAAAiU,EAAK,aAAA7D,CAAA,EAcLpQ,EAAA0T,EAAG,aAAArD,CAAA,E,aApDuBpF,EAAE,+BAA+B,MAsCFA,EAAE,4BAA4B,MAc5CA,EAAE,+BAA+B,MAQnCA,EAAE,4BAA4B,C,GA7BzElM,EAAA,SAAAmM,EAEY,GAAU,CACnBnM,EAAM,eAAc,EACpBmnD,EAAK,CACP,CAAC,EAEA1lD,EAAAyT,MAAK9Y,EAAwH+S,CAAK,EAAA,GAAAxS,EAALwS,EAAKyJ,CAAA,CAAA,E,gBAxClIxc,EAAAub,CAAI,GAAA1H,EAAA6D,CAAA,C,qCALH,C,+DC7ER,SAAAs0C,GAAA,EAAA,EAAA,C,SASa,IAAAp5C,EAAAhS,MAAAkP,EAAE,iBAAiB,CAAA,EAASmF,EAAArU,MAAAkP,EAAE,gBAAgB,CAAA,EAA1DyT,GAAIlR,EAAA,C,kEACF,IAAAJ,EAAGvR,GAAA,EAAHyR,EAAArR,EAAAmR,CAAG,EACD45C,GAAmB15C,EAAA,C,0BAEnB04C,G,KAAW,EAAA,C,0BAHb1kD,EAAA8L,CAAG,EAAHtP,EAAA0P,EAAAJ,CAAG,C,4BAHE,C,+XCPR,SAAAk6C,GAAA,EAAA,EAAA,C,QAME,IAAMC,EAAI,CAAI,WAAY,WAAY,YAAa,YAAa,WAAY,U,EAE5E,SAASC,GAAS,CACZ,QAAQv8C,EAAE,+BAA+B,CAAA,GAAAsC,EAAA,SAAA,CAC/C,CAGD,IAAAH,EAAG/Q,GAAA,EACDyW,EAAGxW,EADL8Q,CAAG,EAEC2C,EAAGzT,EADLwW,CAAG,EACDtR,EAAAuO,EAAG,OACKw3C,EAAQ,GAAKE,GAAG,EAAR,IAAG,C,CAEN,IAAA15C,EAAAxR,MAAA,IAAAkrD,GAAG,EACsBr3C,EAAA7T,MAAAgR,EAAA,UAAAk6C,EAAM,kBAAoB,EAAE,EAF9D95C,GAAAH,EAAA,C,mGAGCnP,EAAA,GAAA3B,EAAA+F,EAAAsL,CAAA,EAAA,KAAA9C,EAAC,uBAAwBw8C,GAAG,CAAA,CAAA,E,kCALjCnmD,EAAAyO,CAAG,EASH,IAAAkD,EAAGtW,EATHoT,EAAG,CAAA,EAUDjC,EAACxR,EADH2W,CAAG,EACD3F,EAAAhR,EAAAwR,CAAC,E,MAEG,IAAAiV,EAAA5mB,GAAA,E,aAAA6D,EAAA+iB,EAAA,MAAA,GAAAxV,EAAA,OACgB,QAAQ,OAAKA,EAAA,OAAW,QAAQ,UAAS,SAAA,EADzD,EAAA3Q,GAAAmmB,EAAA,EAAA,GAAA,KAAAnQ,EAAA,CAAA,MAAA,CAAArF,EAAA,OAKsB,QAAQ,KAAK,CAAA,C,GALnCxO,EAAA,QAAAgkB,EAMW,GAAW,EAAM,cAAc,IAAG,GAAAxV,EAAA,OAAa,QAAQ,UAAS,SAAA,EAN3E7L,GAAAqhB,CAAA,EAAAjlB,EAAA0P,EAAAuV,CAAA,C,2BASF,IAAA5U,EAAIxR,EAAA2Q,EAAA,CAAA,EAAJ2C,EAAApT,EAAAsR,EAAI,EAAA,EAXN7M,EAAAwM,CAAC,EAaD,IAAAkC,EAAMrT,EAbNmR,EAAC,CAAA,EAaDqC,EAAAtT,EAAAmT,EAAM,EAAA,EACNE,EAAMvT,EADNqT,EAAM,CAAA,EACN6H,EAAAhb,EAAAqT,EAAM,EAAA,EAfR5O,EAAA2R,CAAG,EAVL3R,EAAAwR,CAAG,EA6BH,IAAAU,EAAG7W,EA7BHmW,EAAG,CAAA,EA6BHC,EAAAzW,EAAAkX,CAAG,E,oBAAHlS,EAAAkS,CAAG,EA9BLlS,EAAA8L,CAAG,E,cAECpN,EAAA+P,EAAG,aAAAhC,CAAA,EAUD/N,EAAA8N,EAAC,OAAAP,EAAA,OAAA,EAADvN,EAAA8N,EAAC,QAAAsC,CAAA,E,sCAVmCnF,EAAE,sBAAsB,MAUfA,EAAE,wBAAwB,MAaRA,EAAE,yBAAyB,MACfA,EAAE,uBAAuB,C,GADpGxM,EAAA,QAAAuR,EAAM,SAAA,GAAAkE,EAAA,C,6BACNzV,EAAA,QAAAyR,EAAkEs3C,CAAM,EA1B9E1pD,EAAA0P,EAAAJ,CAAG,E,GAFI,C,6nDCXR,SAAA86C,GAAA,EAAA,EAAA,C,QA6BE,IAAMC,EAAMhpD,MAAcgN,GAASoB,EAAA,IAAA,CAAA,EAC7BP,EAAS7N,MAAcwN,GAAYY,EAAA,KAAM,IAAI,CAAA,EAEnDR,GAAcC,CAAM,EAEpB,IAAIo7C,EAAQnrD,EAAO,UAAU,EACzBwG,EAAUxG,EAAO,IAAI,EACrB4uB,EAAS5uB,EAAO,IAAI,EACpBorD,EAASprD,EAAO,IAAI,EAElB8oB,EAAK7oB,MACP,CAAAC,EAAGkrD,CAAM,GAAAlrD,EAAIkrD,CAAM,CAAA,CAAC,SAAS,OAAO,EAAU,KAC9ClrD,EAAEkrD,CAAM,CAAA,CAAC,SAAS,UAAU,GAAAlrD,EAAKkrD,CAAM,CAAA,CAAC,SAAS,SAAS,EAAUp9C,EAAE,kBAAkB,EACxF9N,EAAEkrD,CAAM,CAAA,CAAC,SAAS,UAAU,EAAUp9C,EAAE,sBAAsB,EAC9D9N,EAAEkrD,CAAM,CAAA,CAAC,SAAS,SAAS,EAAUp9C,EAAE,qBAAqB,EACvDA,EAAE,kBAAkB,CAC5B,EAEKq9C,EAAG,C,CACN,GAAI,WAAY,4D,GAChB,UAAW,SAAU,kF,GACrB,iBAAkB,gBAAiB,wG,GACnC,WAAY,UAAW,0M,GAGpBC,EAAQ,CAAI,WAAY,WAAY,YAAa,YAAa,WAAY,U,EAE1EC,EAAW,wBAEjB,SAASC,EAAM,EAAO,CACpB,GAAIC,IAAU,iBAAkB,MAAO,GACvC,GAAIA,IAAU,gBAAiB,MAAO,GAEtC,GAAI,CAGF,MAFA,CAAI,eAAe,QAAQF,CAAQ,IACnC,eAAe,QAAQA,EAAU,GAAG,EAC7B,GACT,MAAQ,CACN,MAAO,EACT,CACF,CAEA,SAASpM,GAAW,CAClB,SAAS,QAAQ1wC,GAAY6B,EAAA,IAAA,CAAA,CAC/B,CAEA,eAAeo7C,GAAQ,CACrB,IAAM7/C,EAAQ,IAAI,gBAAgB,SAAS,MAAM,EAEjD,GAAI,CACF,GAAI2/C,EAAM3/C,EAAM,IAAI,OAAO,CAAA,EAAI,CAC7Bq/C,EAAI,OAAM,EACV/L,EAAQ,EACR,MACF,CAEA,GAAItzC,EAAM,IAAI,OAAO,EAAG,CACtB1J,EAAAqE,EAAUqF,EAAM,IAAI,mBAAmB,GAAKA,EAAM,IAAI,OAAO,EAAA,EAAA,EAC7DkE,EAAO,QAAQ,EAAE,EACjB5N,EAAAgpD,EAAQ,QAAQ,EAChB,MACF,CAEA,GAAIt/C,EAAM,IAAI,sBAAsB,EAAG,CACrC,MAAM6C,GAAM4B,EAAA,KAAOzE,EAAM,IAAI,sBAAsB,CAAA,EACnDkE,EAAO,QAAQ,EAAE,EACjB,MAAMm7C,EAAI,UAAU,EAAE,EACtB,MACF,CAEA,GAAE,CAAGA,EAAI,OAAM,EAAI,CACjB/L,EAAQ,EACR,MACF,CAEA,GAAIpvC,EAAO,SAAS,KAAO,WAAY,CACrC,GAAM,CAAE,YAAa,MAAMm7C,EAAI,SAAQ,EACvCn7C,EAAO,QAAQpE,GAAY,EAAE,EAC7BggD,EAAK,EACL,MACF,CAEA,GAAE,CAAGT,EAAI,SAAQ,EAAI,CACnB,MAAMA,EAAI,UAAUn7C,EAAO,MAAM,KAAK,MAAKO,EAAA,KAAM,KAAK,MAAM,EAAIP,EAAO,MAAM,OAAS,SAAS,IAAI,EACnG,MACF,CAEA47C,EAAK,CACP,OAASn4C,EAAQ,CACfrR,EAAAqE,EAAUgN,EAAO,QAAO,EAAA,EACxBrR,EAAAgpD,EAAQ,QAAQ,CAClB,CACF,CAEA,IAAIz/C,EAAU1L,EAAO,CAAC,EAEtB,eAAe4rD,GAAe,CAC5B,GAAI,CACF,IAAMnyC,EAAO,MAAMyxC,EAAI,MACrB,0GAA0G,EAG5G/oD,EAAAuJ,EAAU+N,EAAK,UAAYA,EAAK,IAAI,CACtC,MAAQ,CACNtX,EAAAuJ,EAAU,CAAC,CACb,CACF,CAEA,IAAMgK,EAAOzV,MAAY8P,EAAO,SAAS,IAAM,EAAE,EAC3C87C,EAAY5rD,MAAY+N,EAAE,cAAa,CAAI,MAAK9N,EAAEwL,CAAO,CAAA,CAAA,CAAA,EAE/DzJ,MAAc,CACV/B,EAAEirD,CAAK,IAAK,SAAOjrD,EAAIwV,CAAO,IAAK,IAAA,IAAWk2C,EAAY,CAC9D,CAAC,EAED,SAASD,GAAQ,CACfxpD,EAAAgpD,EAAQ,OAAO,EAEfD,EACG,MAAM,iFAAiF,CAAA,CACvF,KAAM,GAAS,CACd/oD,EAAAysB,EAASnV,EAAK,OAAM,EAAA,EACpBtX,EAAAipD,EAAS3xC,EAAK,aAAY,EAAA,CAC5B,CAAC,CAAA,CACA,UAAY,CAAC,CAAC,CACnB,CAEAiyC,EAAK,EAEL,IAAMI,EAAO7rD,MAAY8P,EAAO,SAAS,IAAM,EAAE,EAC3Cg8C,EAAU9rD,MAAYqrD,EAAS,SAAQprD,EAAC4rD,CAAO,CAAA,CAAA,EAC/CE,EAAU/rD,MAAAC,EACd0uB,CAAM,CAAA,EAAE,YAAcs8B,EAAI,MAAM,UAAU,oBAAsBl9C,EAAE,aAAa,CAAA,EAGjF,SAASi+C,IAAQ,CACf,SAAS,OAAM37C,EAAA,KAAM,IAAI,CAC3B,CAEA,SAAS/B,GAAS,CAChB28C,EAAI,OAAM,EACVe,GAAK,CACP,CAEA,eAAe9wB,IAAU,CACvB,SAAS,OAAQ,MAAM+vB,EAAI,QAAO,GAAA56C,EAAA,KAAY,IAAI,CACpD,C,0BAIC,IAAAH,EAAGP,GAAA,EAAHkG,EAAAzV,EAAA8P,CAAG,E,CACc,IAAAW,EAAA7Q,MAAA+N,EAAE,cAAc,CAAA,EAA/BgD,GAAO8E,EAAA,C,2BADTzR,EAAA8L,CAAG,EAAHtP,EAAA0P,EAAAJ,CAAG,C,QAIH,IAAA0F,EAAG40C,GAAA,EACDyB,EAAI7rD,EADNwV,CAAG,EAECG,EAAG3V,EADL6rD,CAAI,EAEAh7C,EAAI7Q,EADN2V,CAAG,EACDxQ,EAAAlF,EAAA4Q,EAAI,EAAA,EAEJ2Q,EAAEthB,EAFF2Q,EAAI,CAAA,EAEJ8B,EAAA1S,EAAAuhB,EAAE,EAAA,EAEFzR,EAAC7P,EAFDshB,EAAE,CAAA,EAEF3O,EAAA5S,EAAA8P,EAAC,EAAA,EAED2C,EAAMxS,EAFN6P,EAAC,CAAA,EAEDwK,EAAAta,EAAAyS,EAAM,EAAA,EAPR1O,EAAA2R,CAAG,EADL3R,EAAA6nD,CAAI,EADN7nD,EAAAwR,CAAG,E,0BAOmBvS,EAAA4P,EAAAhT,EAAAsG,CAAO,CAAA,E,aAJOwH,EAAE,aAAa,MAEpBA,EAAE,aAAY,CAAI,OAAMsC,EAAA,KAAO,OAAO,IAAI,CAAA,MAIdtC,EAAE,WAAW,C,GAAlExM,EAAA,QAAAuR,EAA6Ck5C,EAAK,EATxDprD,EAAA0P,EAAAsF,CAAG,C,SAcH,IAAAU,EAAGy0C,GAAA,EACDplD,EAAMvF,EADRkW,CAAG,EAECE,EAAGpW,EADLuF,CAAM,EACJsQ,EAAA7V,EAAAoW,CAAG,EACD/F,GAAIwF,EAAA,C,+DAAyF9U,MAAAZ,EAAAsa,EAAAxK,EAAA,KAAA,OAAO,IAAI,CAAA,E,+BAExG,IAAAwC,EAAGvS,EAAA2V,EAAA,CAAA,EAAH3R,EAAAuO,EAAG,OACKu4C,GAAG,CAAKx7C,EAAIoB,KAAQpB,GAAE,EAAA,IAAA,C,wBAAd,IAAAA,MAAG3P,EAAAyR,CAAA,CAAA,CAAA,GAACV,MAAM/Q,EAAAyR,CAAA,CAAA,CAAA,G,CAGJ,IAAAb,EAAA7Q,MAAAC,EAAA4rD,CAAO,IAAKj8C,EAAE,CAAA,CAAC,QAAQ,IAAK,EAAE,EAAI,cAAgB,EAAE,EAFtEa,GAAAH,EAAA,C,SACE,OAAAV,EAAE,C,mGAE2D,IAAAgC,EAAI84C,GAAA,EAAJzvC,EAAA5a,EAAAuR,EAAI,EAAA,E,OAAJ9O,EAAA8O,EAAI,QAAA3R,EAA0B2rD,CAAY,CAAA,EAAGvoD,EAAA4X,EAAAhb,EAAAwL,CAAO,CAAA,C,GAApD7K,EAAA0P,EAAAsB,CAAI,C,UAAvCZ,EAAK,IAAK,UAAQ/Q,EAAIwL,CAAO,EAAG,GAACqG,EAAAqE,CAAA,C,GAA5DhV,EAAA,GAAAZ,EAAAwa,EAAAlK,CAAA,EAAA,KAAA9C,EAAC,WAAYiD,EAAK,GAAA,CAAA,CAAA,E,kCALvB5M,EAAAyO,CAAG,EAAH,IAAAuD,EAAA9V,EAAAuS,EAAG,CAAA,E,CAW0B,IAAAhC,EAAA7Q,MAAAC,EAAA6rD,CAAU,EAAG,iBAAmB,EAAE,EAClD54C,EAAAlT,MAAA+N,EAAE,cAAc,CAAA,EACrBoF,EAAAnT,MAAA+N,EAAE,cAAc,CAAA,EAJxB0C,GAAA2F,EAAA,C,6IAME,IAAAvE,EAAG+4C,GAAA,EAAHhqD,EAAA0P,EAAAuB,CAAG,C,yBAlBPzN,EAAAoS,CAAG,EADLpS,EAAAuB,CAAM,EA2BN,IAAAumD,EAAI5rD,EA3BJqF,EAAM,CAAA,EA2BN4Q,EAAAnW,EAAA8rD,CAAI,E,MAEA,IAAAlxC,EAAC6vC,GAAA,EAAD1vC,EAAA9a,EAAA2a,EAAC,EAAA,EAAsD7Z,MAAAZ,EAAA4a,EAAAlb,EAAA4oB,CAAK,CAAA,CAAA,EAA5DjoB,EAAA0P,EAAA0K,CAAC,C,UADC/a,EAAA4oB,CAAK,GAAA/W,EAAAuE,CAAA,C,sBAIP6hC,GAAY5nC,EAAA,C,UAAE,OAAA26C,C,4DAGZjwB,GAAU1qB,EAAA,C,UAAE,OAAA26C,C,WAAS,OAAAn7C,EAAO,SAAS,E,WAErCye,GAASje,EAAA,C,UAAE,OAAA26C,C,aAAW,OAAAn7C,EAAO,SAAS,E,aAAU,OAAAA,EAAO,SAAS,E,WAEhE+S,GAAUvS,EAAA,C,UAAE,OAAA26C,C,aALVn7C,EAAO,SAAS,KAAO,WAAaA,EAAO,SAAS,GAACgC,EAAA8J,CAAA,EAEhD9L,EAAO,SAAS,GAACgC,EAAA0K,EAAA,CAAA,EAAA1K,EAAAwF,EAAA,EAAA,C,wCAOxB83B,GAAgB9+B,EAAA,C,UAAE,OAAA26C,C,wBAAsB,OAAAn7C,EAAO,SAAS,E,aAAU,OAAAA,EAAO,SAAS,E,WAElF+8B,GAAiBv8B,EAAA,C,UAAE,OAAA26C,C,aAHjBn7C,EAAO,SAAS,GAACgC,EAAAiL,CAAA,EAAAjL,EAAA+J,EAAA,EAAA,C,wCAOnBmoB,GAAU1zB,EAAA,C,UAAE,OAAA26C,C,iBAAe,OAAAn7C,EAAO,SAAS,E,aAAU,OAAAA,EAAO,SAAS,E,WAErEutB,GAAW/sB,EAAA,C,UAAE,OAAA26C,C,aAHXn7C,EAAO,SAAS,GAACgC,EAAA0L,CAAA,EAAA1L,EAAAmZ,EAAA,EAAA,C,iBAMrBm/B,GAAa95C,EAAA,C,cAAE,OAAArQ,EAAA4rD,CAAO,C,eAAG,OAAA5rD,EAAA0uB,CAAM,C,mBAAc,OAAA1uB,EAAA8rD,CAAU,C,gBAAgB,OAAA17C,EAAA,KAAA,O,EAAoB,UAAA6qB,GAAmB,SAAA5sB,E,wCAE1G2uC,GAAY3sC,EAAA,C,UAAE,OAAA26C,C,oBAAkB,OAAAn7C,EAAO,SAAS,E,aAAU,OAAAA,EAAO,SAAS,E,WAE1EqrC,GAAa7qC,EAAA,C,UAAE,OAAA26C,C,WAEfjF,GAAY11C,EAAA,C,UAAE,OAAA26C,C,WAEdhB,GAAa35C,EAAA,C,UAAE,OAAA26C,C,WAEf1H,GAAYjzC,EAAA,C,UAAE,OAAA26C,C,aAAW,OAAAn7C,EAAO,SAAS,E,WAEzCm0C,GAAW3zC,EAAA,C,UAAE,OAAA26C,C,WAEbrR,GAAYtpC,EAAA,C,UAAE,OAAA26C,C,WAEdxW,GAAYnkC,EAAA,C,UAAE,OAAA26C,C,uCAfZhrD,EAAA4rD,CAAO,IAAK,aAAe/7C,EAAO,SAAS,GAACgC,EAAAwgB,CAAA,EAAAryB,EAEvC4rD,CAAO,IAAK,YAAW/5C,EAAA4gB,EAAA,CAAA,EAAAzyB,EAEvB4rD,CAAO,IAAK,WAAU/5C,EAAA0gB,EAAA,CAAA,EAAAvyB,EAEtB4rD,CAAO,IAAK,YAAW/5C,EAAAigB,EAAA,CAAA,EAAA9xB,EAEvB4rD,CAAO,IAAK,WAAU/5C,EAAA0hB,EAAA,CAAA,EAAAvzB,EAEtB4rD,CAAO,IAAK,YAAc/7C,EAAO,SAAS,KAAO,UAASgC,EAAAgiB,EAAA,CAAA,EAAA7zB,EAE1D4rD,CAAO,IAAK,WAAU/5C,EAAAojB,EAAA,CAAA,EAAApjB,EAAAwlB,EAAA,EAAA,C,yCAOjCrnB,GAAKK,EAAA,C,+BAAEnP,EAAA,GAAAZ,EAAA8a,EAAAxK,CAAA,EAAA,KAAA9C,EAAE,aAAa,CAAA,CAAA,E,wCA3CpB9N,EAAA4rD,CAAO,IAAK,GAAE/5C,EAAA6D,CAAA,EAAA1V,EAET4rD,CAAO,IAAK,SAAQ/5C,EAAA6K,EAAA,CAAA,EAAA1c,EAQpB4rD,CAAO,IAAK,gBAAe/5C,EAAAqL,EAAA,CAAA,EAAAld,EAM3B4rD,CAAO,IAAK,UAAS/5C,EAAAmgB,EAAA,CAAA,EAAAhyB,EAMrB6rD,CAAU,EAAAh6C,EAAA0jB,EAAA,CAAA,EAAA1jB,EAAA8e,EAAA,EAAA,C,GA1BrBxsB,EAAA8nD,CAAI,EAmDJ,IAAAC,EAAG7rD,EAnDH4rD,EAAI,CAAA,EAmDJ5nD,EAAA6nD,EAAG,OACKf,GAAG,CAAKx7C,EAAIoB,EAAOo7C,KAAOx8C,GAAE,EAAA,IAAA,C,wBAApB,IAAAA,MAAG3P,EAAA00B,CAAA,CAAA,CAAA,GAAC3jB,MAAM/Q,EAAA00B,CAAA,CAAA,CAAA,GAACy3B,MAAKnsD,EAAA00B,CAAA,CAAA,CAAA,G,CACE,IAAA9jB,EAAA7Q,MAAAC,EAAA4rD,CAAO,IAAKj8C,EAAE,CAAA,CAAC,QAAQ,IAAK,EAAE,EAAI,iBAAmB,EAAE,EAArFa,GAAIH,EAAA,C,SAAE,OAAAV,EAAE,C,2EACNy8C,EAAGlsD,EAAAk5B,CAAA,EAAHv4B,EAAAurD,EAAsJD,EAAI,EAAA,EAA1JhoD,EAAAioD,CAAG,EACH,IAAA5vC,EAAInc,EADJ+rD,EAAG,CAAA,EACH7wC,EAAAnb,EAAAoc,EAAI,EAAA,EAAEtb,EAAA,GAAAZ,EAAAib,EAAA3K,CAAA,EAAA,KAAA9C,EAAC,WAAYiD,EAAK,GAAA,CAAA,CAAA,E,kCAJ9B5M,EAAA+nD,CAAG,EA/EL/nD,EAAAkS,CAAG,EA+EDnV,EAAA,GAAAT,EAAAyrD,EAAG,aAAAt7C,CAAA,EAAA,KAAsC9C,EAAE,cAAc,CAAA,CAAA,EA/E3DnN,EAAA0P,EAAAgG,CAAG,C,UAnBDrW,EAAAirD,CAAK,IAAK,WAAUp5C,EAAAP,EAAA,EAAAtR,EAIfirD,CAAK,IAAK,SAAQp5C,EAAAgE,EAAA,CAAA,EAAAhE,EAAA01B,GAAA,EAAA,C,cANpB,C,aC5KR,IAAM/hC,GAAS,SAAS,eAAe,QAAQ,EAE/C,GAAIA,GAAQ,CACV,IAAM4I,EAAO,KAAK,MAAM5I,GAAO,QAAQ,IAAI,EAE3CgI,GAAQY,EAAK,KAAM,SAAS,gBAAgB,MAAQ,IAAI,EACxD5I,GAAO,gBAAgB,EAEvB/D,EAAMspD,GAAK,CAAE,UAAQ,MAAO,CAAE,MAAK,CAAE,CAAC,CACxC"}