"use strict";(self.webpackChunktimetrex=self.webpackChunktimetrex||[]).push([["wizard-dashlet-DashletWizardController"],{9022:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"DashletWizardController\": () => (/* binding */ DashletWizardController)\n/* harmony export */ });\n/* provided dependency */ var _ = __webpack_require__(9050);\n/* provided dependency */ var $ = __webpack_require__(9755);\nclass DashletWizardController extends BaseWizardController {\n\tconstructor( options = {} ) {\n\t\t_.defaults( options, {\n\t\t\tel: '.wizard-bg',\n\t\t\tuser_generic_data_api: null,\n\t\t\tapi_user_report: null,\n\t\t\tnumArray: [\n\t\t\t\t{ label: $.i18n._( 'Default' ), value: 0 },\n\t\t\t\t{ label: 5, value: 5 },\n\t\t\t\t{ label: 10, value: 10 },\n\t\t\t\t{ label: 15, value: 15 },\n\t\t\t\t{ label: 20, value: 20 },\n\t\t\t\t{ label: 25, value: 25 },\n\t\t\t\t{ label: 50, value: 50 },\n\t\t\t\t{ label: 100, value: 100 },\n\t\t\t\t{ label: 250, value: 250 },\n\t\t\t\t{ label: 500, value: 500 },\n\t\t\t\t{ label: 1000, value: 1000 }\n\t\t\t]\n\t\t} );\n\n\t\tsuper( options );\n\t}\n\n\tinit( options ) {\n\t\t//this._super('initialize', options );\n\t\tthis.title = $.i18n._( 'Dashlet Wizard' );\n\t\tthis.steps = 2;\n\t\tthis.current_step = 1;\n\t\tthis.user_generic_data_api = TTAPI.APIUserGenericData;\n\t\tthis.api_user_report = TTAPI.APIUserReportData;\n\t\tthis.render();\n\t}\n\n\trender() {\n\t\tsuper.render();\n\t\tthis.initCurrentStep();\n\t}\n\n\t//Create each page UI\n\tbuildCurrentStepUI() {\n\t\tvar $this = this;\n\t\tthis.stepsWidgetDic[this.current_step] = {};\n\t\tthis.content_div.empty();\n\t\tvar combobox;\n\n\t\tswitch ( this.current_step ) {\n\t\t\tcase 1:\n\t\t\t\tvar label = this.getLabel();\n\t\t\t\tlabel.text( $.i18n._( 'Choose the type of dashlet' ) );\n\t\t\t\tthis.content_div.append( label );\n\t\t\t\tcombobox = this.getComboBox( 'dashlet_type', false );\n\t\t\t\tcombobox.unbind( 'formItemChange' ).bind( 'formItemChange', function( e, target ) {\n\t\t\t\t\t$this.stepsDataDic[2] = null;\n\t\t\t\t\t$this.stepsWidgetDic[2] = null;\n\t\t\t\t} );\n\t\t\t\tcombobox.off( 'change' ).on( 'change', function( e ) {\n\t\t\t\t\t$this.step1ComboboxChanged( $( e.target ).val() );\n\t\t\t\t} );\n\t\t\t\tthis.content_div.append( combobox );\n\t\t\t\tthis.stepsWidgetDic[this.current_step][combobox.getField()] = combobox;\n\n\t\t\t\tbreak;\n\t\t\tcase 2:\n\t\t\t\tlabel = this.getLabel();\n\t\t\t\tvar step_1_data = this.stepsDataDic[1];\n\t\t\t\tvar form_item;\n\t\t\t\tvar form_item_label;\n\t\t\t\tvar form_item_input_div;\n\t\t\t\tvar textInput;\n\n\t\t\t\tif ( step_1_data.dashlet_type == 'custom_list' ) {\n\t\t\t\t\tlabel.text( $.i18n._( 'Choose a list view and layout to display in the dashlet' ) );\n\t\t\t\t\tthis.content_div.append( label );\n\n\t\t\t\t\t// Choose view\n\t\t\t\t\tform_item = $( Global.loadWidget( 'global/widgets/wizard_form_item/WizardFormItem.html' ) );\n\t\t\t\t\tform_item_label = form_item.find( '.form-item-label' );\n\t\t\t\t\tform_item_input_div = form_item.find( '.form-item-input-div' );\n\t\t\t\t\tcombobox = this.getComboBox( 'script', false );\n\t\t\t\t\tcombobox.unbind( 'formItemChange' ).bind( 'formItemChange', function( e, target ) {\n\t\t\t\t\t\t$this.setLayout( $this.getScriptNameByAPIViewKey( target.getValue() ) );\n\t\t\t\t\t\t$this.setDefaultName( step_1_data.dashlet_type );\n\t\t\t\t\t} );\n\t\t\t\t\tform_item_label.text( $.i18n._( 'List View' ) );\n\t\t\t\t\tform_item_input_div.append( combobox );\n\t\t\t\t\tthis.content_div.append( form_item );\n\t\t\t\t\tthis.stepsWidgetDic[this.current_step][combobox.getField()] = combobox;\n\n\t\t\t\t\t//Dashlet Title\n\t\t\t\t\tform_item = $( Global.loadWidget( 'global/widgets/wizard_form_item/WizardFormItem.html' ) );\n\t\t\t\t\tform_item_label = form_item.find( '.form-item-label' );\n\t\t\t\t\tform_item_input_div = form_item.find( '.form-item-input-div' );\n\t\t\t\t\ttextInput = this.getTextInput( 'name', false );\n\t\t\t\t\tform_item_label.text( $.i18n._( 'Dashlet Title' ) );\n\t\t\t\t\tform_item_input_div.append( textInput );\n\t\t\t\t\tthis.content_div.append( form_item );\n\t\t\t\t\tthis.stepsWidgetDic[this.current_step][textInput.getField()] = textInput;\n\n\t\t\t\t\t//Choose layout\n\t\t\t\t\tform_item = $( Global.loadWidget( 'global/widgets/wizard_form_item/WizardFormItem.html' ) );\n\t\t\t\t\tform_item_label = form_item.find( '.form-item-label' );\n\t\t\t\t\tform_item_input_div = form_item.find( '.form-item-input-div' );\n\t\t\t\t\tcombobox = this.getComboBox( 'layout', false );\n\t\t\t\t\tcombobox.setValueKey( 'id' );\n\t\t\t\t\tcombobox.setLabelKey( 'name' );\n\t\t\t\t\tform_item_label.text( $.i18n._( 'Saved Layout' ) );\n\t\t\t\t\tform_item_input_div.append( combobox );\n\t\t\t\t\tthis.content_div.append( form_item );\n\t\t\t\t\tthis.stepsWidgetDic[this.current_step][combobox.getField()] = combobox;\n\n\t\t\t\t\t// Rows per page\n\t\t\t\t\tform_item = $( Global.loadWidget( 'global/widgets/wizard_form_item/WizardFormItem.html' ) );\n\t\t\t\t\tform_item_label = form_item.find( '.form-item-label' );\n\t\t\t\t\tform_item_input_div = form_item.find( '.form-item-input-div' );\n\t\t\t\t\tcombobox = this.getComboBox( 'rows_per_page', false );\n\t\t\t\t\tcombobox.setSourceData( this.numArray );\n\t\t\t\t\tform_item_label.text( $.i18n._( 'Rows per page' ) );\n\t\t\t\t\tform_item_input_div.append( combobox );\n\t\t\t\t\tthis.content_div.append( form_item );\n\t\t\t\t\tthis.stepsWidgetDic[this.current_step][combobox.getField()] = combobox;\n\n\t\t\t\t} else if ( step_1_data.dashlet_type == 'custom_report' ) {\n\t\t\t\t\tlabel.text( $.i18n._( 'Choose a saved report to display in the dashlet' ) );\n\t\t\t\t\tthis.content_div.append( label );\n\n\t\t\t\t\t// Choose a Report\n\t\t\t\t\tform_item = $( Global.loadWidget( 'global/widgets/wizard_form_item/WizardFormItem.html' ) );\n\t\t\t\t\tform_item_label = form_item.find( '.form-item-label' );\n\t\t\t\t\tform_item_input_div = form_item.find( '.form-item-input-div' );\n\t\t\t\t\tcombobox = this.getComboBox( 'report', false );\n\t\t\t\t\tcombobox.unbind( 'formItemChange' ).bind( 'formItemChange', function( e, target ) {\n\t\t\t\t\t\t$this.setTemplateSource();\n\t\t\t\t\t\t$this.stepsWidgetDic[2].template.setValue( 'saved_report' );\n\t\t\t\t\t\t$this.setSavedReport();\n\t\t\t\t\t\t$this.setDefaultName( step_1_data.dashlet_type );\n\t\t\t\t\t} );\n\t\t\t\t\tform_item_label.text( $.i18n._( 'Report' ) );\n\t\t\t\t\tform_item_input_div.append( combobox );\n\t\t\t\t\tthis.content_div.append( form_item );\n\t\t\t\t\tthis.stepsWidgetDic[this.current_step][combobox.getField()] = combobox;\n\n\t\t\t\t\t//Template\n\t\t\t\t\tform_item = $( Global.loadWidget( 'global/widgets/wizard_form_item/WizardFormItem.html' ) );\n\t\t\t\t\tform_item_label = form_item.find( '.form-item-label' );\n\t\t\t\t\tform_item_input_div = form_item.find( '.form-item-input-div' );\n\t\t\t\t\tcombobox = this.getComboBox( 'template', false );\n\t\t\t\t\tform_item_label.text( $.i18n._( 'Template' ) );\n\t\t\t\t\tform_item_input_div.append( combobox );\n\t\t\t\t\tthis.content_div.append( form_item );\n\t\t\t\t\tthis.stepsWidgetDic[this.current_step][combobox.getField()] = combobox;\n\n\t\t\t\t\tcombobox.unbind( 'formItemChange' ).bind( 'formItemChange', function( e, target ) {\n\t\t\t\t\t\t$this.setSavedReport();\n\t\t\t\t\t} );\n\n\t\t\t\t\t//Choose saved report\n\t\t\t\t\tform_item = $( Global.loadWidget( 'global/widgets/wizard_form_item/WizardFormItem.html' ) );\n\t\t\t\t\tform_item_label = form_item.find( '.form-item-label' );\n\t\t\t\t\tform_item_input_div = form_item.find( '.form-item-input-div' );\n\t\t\t\t\tcombobox = this.getComboBox( 'saved_report', false );\n\t\t\t\t\tcombobox.setValueKey( 'id' );\n\t\t\t\t\tcombobox.setLabelKey( 'name' );\n\t\t\t\t\tform_item_label.text( $.i18n._( 'Saved Report' ) );\n\t\t\t\t\tform_item_input_div.append( combobox );\n\t\t\t\t\tthis.content_div.append( form_item );\n\t\t\t\t\tthis.stepsWidgetDic[this.current_step][combobox.getField()] = combobox;\n\n\t\t\t\t\t//Dashlet Title\n\t\t\t\t\tform_item = $( Global.loadWidget( 'global/widgets/wizard_form_item/WizardFormItem.html' ) );\n\t\t\t\t\tform_item_label = form_item.find( '.form-item-label' );\n\t\t\t\t\tform_item_input_div = form_item.find( '.form-item-input-div' );\n\t\t\t\t\ttextInput = this.getTextInput( 'name', false );\n\t\t\t\t\tform_item_label.text( $.i18n._( 'Dashlet Title' ) );\n\t\t\t\t\tform_item_input_div.append( textInput );\n\t\t\t\t\tthis.content_div.append( form_item );\n\t\t\t\t\tthis.stepsWidgetDic[this.current_step][textInput.getField()] = textInput;\n\n\t\t\t\t} else {\n\t\t\t\t\tlabel.text( $.i18n._( 'Choose dashlet specific settings' ) );\n\t\t\t\t\tthis.content_div.append( label );\n\n\t\t\t\t\t//Dashlet Title\n\t\t\t\t\tform_item = $( Global.loadWidget( 'global/widgets/wizard_form_item/WizardFormItem.html' ) );\n\t\t\t\t\tform_item_label = form_item.find( '.form-item-label' );\n\t\t\t\t\tform_item_input_div = form_item.find( '.form-item-input-div' );\n\t\t\t\t\ttextInput = this.getTextInput( 'name', false );\n\t\t\t\t\tform_item_label.text( $.i18n._( 'Dashlet Title' ) );\n\t\t\t\t\tform_item_input_div.append( textInput );\n\t\t\t\t\tthis.content_div.append( form_item );\n\t\t\t\t\tthis.stepsWidgetDic[this.current_step][textInput.getField()] = textInput;\n\n\t\t\t\t\t// Rows per page\n\t\t\t\t\tform_item = $( Global.loadWidget( 'global/widgets/wizard_form_item/WizardFormItem.html' ) );\n\t\t\t\t\tform_item_label = form_item.find( '.form-item-label' );\n\t\t\t\t\tform_item_input_div = form_item.find( '.form-item-input-div' );\n\t\t\t\t\tcombobox = this.getComboBox( 'rows_per_page', false );\n\t\t\t\t\tcombobox.setSourceData( this.numArray );\n\t\t\t\t\tform_item_label.text( $.i18n._( 'Rows per page' ) );\n\t\t\t\t\tform_item_input_div.append( combobox );\n\t\t\t\t\tthis.content_div.append( form_item );\n\t\t\t\t\tthis.stepsWidgetDic[this.current_step][combobox.getField()] = combobox;\n\n\t\t\t\t}\n\n\t\t\t\t// Auto refresh\n\t\t\t\tform_item = $( Global.loadWidget( 'global/widgets/wizard_form_item/WizardFormItem.html' ) );\n\t\t\t\tform_item_label = form_item.find( '.form-item-label' );\n\t\t\t\tform_item_input_div = form_item.find( '.form-item-input-div' );\n\t\t\t\tcombobox = this.getComboBox( 'auto_refresh', false );\n\t\t\t\tform_item_label.text( $.i18n._( 'Auto Refresh' ) );\n\t\t\t\tform_item_input_div.append( combobox );\n\t\t\t\tthis.content_div.append( form_item );\n\t\t\t\tthis.stepsWidgetDic[this.current_step][combobox.getField()] = combobox;\n\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tstep1ComboboxChanged( value ) {\n\t\tif ( Global.getProductEdition() <= 10 && ( value == 'custom_list' || value == 'custom_report' ) ) {\n\t\t\tTAlertManager.showAlert( Global.getUpgradeMessage(), $.i18n._( 'Denied' ) );\n\t\t\tGlobal.setWidgetEnabled( this.next_btn, false );\n\t\t} else {\n\t\t\tGlobal.setWidgetEnabled( this.next_btn, true );\n\t\t}\n\t}\n\n\tsetDefaultName( dashlet_type ) {\n\t\tvar step_2_ui = this.stepsWidgetDic[2];\n\t\tvar step_1_ui = this.stepsWidgetDic[1];\n\t\tif ( dashlet_type === 'custom_list' ) {\n\t\t\tstep_2_ui.name.setValue( step_2_ui.script.getLabel() );\n\t\t} else if ( dashlet_type === 'custom_report' ) {\n\t\t\tstep_2_ui.name.setValue( step_2_ui.report.getLabel() );\n\t\t} else {\n\t\t\tstep_2_ui.name.setValue( step_1_ui.dashlet_type.getLabel() );\n\t\t}\n\t}\n\n\tbuildCurrentStepData() {\n\t\tvar $this = this;\n\t\tvar current_step_data = this.stepsDataDic[this.current_step];\n\t\tvar current_step_ui = this.stepsWidgetDic[this.current_step];\n\t\tvar api = TTAPI.APIDashboard;\n\t\tswitch ( this.current_step ) {\n\t\t\tcase 1:\n\t\t\t\tapi.getOptions( 'dashlets', {\n\t\t\t\t\tonResult: function( result ) {\n\t\t\t\t\t\tvar result_data = Global.buildRecordArray( result.getResult() );\n\t\t\t\t\t\tcurrent_step_ui.dashlet_type.setSourceData( result_data );\n\t\t\t\t\t\tif ( current_step_data ) {\n\t\t\t\t\t\t\tif ( current_step_data.dashlet_type ) {\n\t\t\t\t\t\t\t\tcurrent_step_ui.dashlet_type.setValue( current_step_data.dashlet_type );\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif ( current_step_data.saved_dashlet_id ) {\n\t\t\t\t\t\t\t\t\t$this.user_generic_data_api.getUserGenericData( {\n\t\t\t\t\t\t\t\t\t\tfilter_data: {\n\t\t\t\t\t\t\t\t\t\t\tid: current_step_data.saved_dashlet_id,\n\t\t\t\t\t\t\t\t\t\t\tdeleted: false\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}, {\n\t\t\t\t\t\t\t\t\t\tonResult: function( result ) {\n\t\t\t\t\t\t\t\t\t\t\tif ( Global.isArray( result.getResult() ) && result.getResult().length > 0 ) {\n\t\t\t\t\t\t\t\t\t\t\t\tcurrent_step_data.saved_dashlet = result.getResult()[0];\n\t\t\t\t\t\t\t\t\t\t\t\tcurrent_step_ui.dashlet_type.setValue( current_step_data.saved_dashlet.data.dashlet_type );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\tbreak;\n\t\t\tcase 2:\n\t\t\t\tif ( this.stepsDataDic[1].dashlet_type == 'custom_list' ) {\n\t\t\t\t\tapi.getOptions( 'custom_list', {\n\t\t\t\t\t\tonResult: function( result ) {\n\t\t\t\t\t\t\tvar array = Global.buildRecordArray( result.getResult() );\n\t\t\t\t\t\t\tcurrent_step_ui.script.setSourceData( array );\n\t\t\t\t\t\t\t//If has saved steps data\n\t\t\t\t\t\t\tif ( current_step_data && current_step_data.script ) {\n\t\t\t\t\t\t\t\tcurrent_step_ui.script.setValue( current_step_data.script );\n\t\t\t\t\t\t\t\tcurrent_step_ui.name.setValue( current_step_data.name );\n\t\t\t\t\t\t\t\tcurrent_step_ui.rows_per_page.setValue( current_step_data.rows_per_page );\n\t\t\t\t\t\t\t} else if ( $this.stepsDataDic[1].saved_dashlet ) {\n\t\t\t\t\t\t\t\tcurrent_step_ui.script.setValue( $this.stepsDataDic[1].saved_dashlet.data.view_name );\n\t\t\t\t\t\t\t\tcurrent_step_ui.name.setValue( $this.stepsDataDic[1].saved_dashlet.name );\n\t\t\t\t\t\t\t\tcurrent_step_ui.rows_per_page.setValue( $this.stepsDataDic[1].saved_dashlet.data.rows_per_page );\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcurrent_step_ui.script.setValue( array[0] );\n\t\t\t\t\t\t\t\t$this.setDefaultName( $this.stepsDataDic[1].dashlet_type );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t$this.setLayout( $this.getScriptNameByAPIViewKey( current_step_ui.script.getValue() ), current_step_ui.layout );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t} else if ( this.stepsDataDic[1].dashlet_type == 'custom_report' ) {\n\t\t\t\t\tapi.getOptions( 'custom_report', {\n\t\t\t\t\t\tonResult: function( result ) {\n\t\t\t\t\t\t\tvar array = Global.buildRecordArray( result.getResult() );\n\t\t\t\t\t\t\tif ( array.length === 0 ) {\n\t\t\t\t\t\t\t\tGlobal.setWidgetEnabled( $this.done_btn, false );\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcurrent_step_ui.report.setSourceData( array );\n\t\t\t\t\t\t\t//If has saved steps data\n\t\t\t\t\t\t\tif ( current_step_data && current_step_data.report ) {\n\t\t\t\t\t\t\t\tcurrent_step_ui.report.setValue( current_step_data.report );\n\t\t\t\t\t\t\t\tcurrent_step_ui.name.setValue( current_step_data.name );\n\t\t\t\t\t\t\t} else if ( $this.stepsDataDic[1].saved_dashlet ) {\n\t\t\t\t\t\t\t\tcurrent_step_ui.report.setValue( $this.stepsDataDic[1].saved_dashlet.data.report );\n\t\t\t\t\t\t\t\tcurrent_step_ui.name.setValue( $this.stepsDataDic[1].saved_dashlet.name );\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcurrent_step_ui.report.setValue( array.value );\n\t\t\t\t\t\t\t\t$this.setDefaultName( $this.stepsDataDic[1].dashlet_type );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t$this.setTemplateSource( current_step_ui.report.getValue() );\n\t\t\t\t\t\t\tif ( current_step_data && current_step_data.report ) {\n\t\t\t\t\t\t\t\tcurrent_step_ui.template.setValue( current_step_data.template );\n\t\t\t\t\t\t\t} else if ( $this.stepsDataDic[1].saved_dashlet ) {\n\t\t\t\t\t\t\t\tcurrent_step_ui.template.setValue( $this.stepsDataDic[1].saved_dashlet.data.template );\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcurrent_step_ui.template.setValue( 'saved_report' );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t$this.setSavedReport( current_step_ui.report.getValue(), current_step_ui.template.getValue() );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t} else {\n\t\t\t\t\tif ( current_step_data ) {\n\t\t\t\t\t\tcurrent_step_ui.name.setValue( current_step_data.name );\n\t\t\t\t\t\tcurrent_step_ui.rows_per_page.setValue( current_step_data.rows_per_page );\n\t\t\t\t\t} else if ( $this.stepsDataDic[1].saved_dashlet ) {\n\t\t\t\t\t\tcurrent_step_ui.name.setValue( $this.stepsDataDic[1].saved_dashlet.name );\n\t\t\t\t\t\tcurrent_step_ui.rows_per_page.setValue( $this.stepsDataDic[1].saved_dashlet.data.rows_per_page );\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$this.setDefaultName( $this.stepsDataDic[1].dashlet_type );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tapi.getOptions( 'auto_refresh', {\n\t\t\t\t\tonResult: function( result ) {\n\t\t\t\t\t\tvar array = Global.buildRecordArray( result.getResult() );\n\t\t\t\t\t\tcurrent_step_ui.auto_refresh.setSourceData( array );\n\t\t\t\t\t\t//If has saved steps data\n\t\t\t\t\t\tif ( current_step_data && current_step_data.auto_refresh ) {\n\t\t\t\t\t\t\tcurrent_step_ui.auto_refresh.setValue( current_step_data.auto_refresh );\n\t\t\t\t\t\t} else if ( $this.stepsDataDic[1].saved_dashlet ) {\n\t\t\t\t\t\t\tcurrent_step_ui.auto_refresh.setValue( $this.stepsDataDic[1].saved_dashlet.data.auto_refresh );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tsetTemplateSource() {\n\t\tvar step_2_widgets = this.stepsWidgetDic[2];\n\t\tvar script = step_2_widgets.report.getValue();\n\t\tvar template_combobox = step_2_widgets.template;\n\t\t//var report_api = new ( APIFactory.getAPIClass( this.report_apis[script] ) )();\n\t\t//var report_api = TTAPI[this.report_apis[script]];\n\t\tvar report_api = TTAPI['API' + script];\n\t\tvar template_options_result = report_api.getOptions( 'templates', { async: false } );\n\t\tvar templates = template_options_result.getResult();\n\t\ttemplates = Global.buildRecordArray( templates );\n\t\ttemplates.unshift( {\n\t\t\tfullvalue: 'saved_report',\n\t\t\tid: 'saved_report',\n\t\t\tlabel: '-- ' + $.i18n._( 'Saved Report' ) + ' --',\n\t\t\torderValue: 0,\n\t\t\tvalue: 'saved_report'\n\t\t} );\n\t\ttemplate_combobox.setSourceData( templates );\n\t}\n\n\tsetSavedReport() {\n\t\tvar step_2_data = this.stepsDataDic[2];\n\t\tvar step_1_data = this.stepsDataDic[1];\n\t\tvar step_2_widgets = this.stepsWidgetDic[2];\n\t\tvar layout_combobox = step_2_widgets.saved_report;\n\t\tvar script = step_2_widgets.report.getValue();\n\t\tvar template = step_2_widgets.template.getValue();\n\t\tif ( template !== 'saved_report' ) {\n\t\t\tlayout_combobox.hide();\n\t\t\tlayout_combobox.parent().parent().hide();\n\t\t\treturn;\n\t\t} else {\n\t\t\tlayout_combobox.parent().parent().show();\n\t\t\tlayout_combobox.show();\n\t\t}\n\n\t\tthis.api_user_report.getUserReportData( {\n\t\t\tfilter_data: {\n\t\t\t\tscript: script\n\t\t\t}\n\t\t}, {\n\t\t\tonResult: function( result ) {\n\t\t\t\tvar result_data = result.getResult();\n\t\t\t\tif ( result_data && result_data.length > 0 ) {\n\t\t\t\t\tresult_data.sort( function( a, b ) {\n\t\t\t\t\t\t\treturn Global.compare( a, b, 'name' );\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tresult_data = [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfullValue: 0,\n\t\t\t\t\t\t\tid: 0,\n\t\t\t\t\t\t\tname: Global.empty_item,\n\t\t\t\t\t\t\tlabel: Global.empty_item,\n\t\t\t\t\t\t\torderValue: 0,\n\t\t\t\t\t\t\tvalue: 0\n\t\t\t\t\t\t}\n\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t\tlayout_combobox.setSourceData( result_data );\n\t\t\t\tif ( step_2_data && step_2_data.layout ) {\n\t\t\t\t\tlayout_combobox.setValue( step_2_data.layout );\n\t\t\t\t} else if ( step_1_data.saved_dashlet ) {\n\t\t\t\t\tlayout_combobox.setValue( step_1_data.saved_dashlet.data.saved_report );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t}\n\n\tsetLayout( script ) {\n\t\tvar step_2_data = this.stepsDataDic[2];\n\t\tvar step_1_data = this.stepsDataDic[1];\n\t\tvar layout_combobox = this.stepsWidgetDic[2].layout;\n\t\tthis.user_generic_data_api.getUserGenericData( {\n\t\t\tfilter_data: {\n\t\t\t\tscript: script,\n\t\t\t\tdeleted: false\n\t\t\t}\n\t\t}, {\n\t\t\tonResult: function( result ) {\n\t\t\t\tvar result_data = result.getResult();\n\t\t\t\tif ( result_data && result_data.length > 0 ) {\n\t\t\t\t\tresult_data.sort( function( a, b ) {\n\t\t\t\t\t\t\treturn Global.compare( a, b, 'name' );\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tresult_data = [{ id: 0, name: '- ' + $.i18n._( 'Default' ) + ' -' }];\n\t\t\t\t}\n\t\t\t\tlayout_combobox.setSourceData( result_data );\n\t\t\t\tif ( step_2_data && step_2_data.layout ) {\n\t\t\t\t\tlayout_combobox.setValue( step_2_data.layout );\n\t\t\t\t} else if ( step_1_data.saved_dashlet ) {\n\t\t\t\t\tlayout_combobox.setValue( step_1_data.saved_dashlet.data.layout_id );\n\t\t\t\t}\n\n\t\t\t}\n\t\t} );\n\t}\n\n\tgetScriptNameByAPIViewKey( key ) {\n\t\tvar result = '';\n\t\tswitch ( key ) {\n\t\t\tcase 'Exception':\n\t\t\t\tresult = 'exceptionView';\n\t\t\t\tbreak;\n\t\t\tcase 'Request':\n\t\t\t\tresult = 'RequestView';\n\t\t\t\tbreak;\n\t\t\tcase 'User':\n\t\t\t\tresult = 'EmployeeView';\n\t\t\t\tbreak;\n\t\t\tcase 'UserExpense':\n\t\t\t\tresult = 'UserExpenseView';\n\t\t\t\tbreak;\n\t\t\tcase 'Schedule':\n\t\t\t\tresult = 'ScheduleShiftView';\n\t\t\t\tbreak;\n\t\t\tcase 'Invoice':\n\t\t\t\tresult = 'InvoiceView';\n\t\t\t\tbreak;\n\t\t\tcase 'Request-Authorization':\n\t\t\t\tresult = 'RequestAuthorizationView';\n\t\t\t\tbreak;\n\t\t\tcase 'PayPeriodTimeSheetVerify':\n\t\t\t\tresult = 'TimeSheetAuthorizationView';\n\t\t\t\tbreak;\n\t\t\tcase 'UserExpense-Authorization':\n\t\t\t\tresult = 'ExpenseAuthorizationView';\n\t\t\t\tbreak;\n\t\t\tcase 'AccrualBalance':\n\t\t\t\tresult = 'AccrualBalanceView';\n\t\t\t\tbreak;\n\t\t\tcase 'Accrual':\n\t\t\t\tresult = 'AccrualView';\n\t\t\t\tbreak;\n\t\t\tcase 'RecurringScheduleControl':\n\t\t\t\tresult = 'RecurringScheduleControlView';\n\t\t\t\tbreak;\n\t\t\tcase 'RecurringScheduleTemplateControl':\n\t\t\t\tresult = 'RecurringScheduleTemplateControlView';\n\t\t\t\tbreak;\n\t\t\tcase 'Job':\n\t\t\t\tresult = 'JobView';\n\t\t\t\tbreak;\n\t\t\tcase 'JobItem':\n\t\t\t\tresult = 'JobItemView';\n\t\t\t\tbreak;\n\t\t\tcase 'UserContact':\n\t\t\t\tresult = 'UserContactView';\n\t\t\t\tbreak;\n\t\t\tcase 'UserWage':\n\t\t\t\tresult = 'WageView';\n\t\t\t\tbreak;\n\t\t\tcase 'PayStub':\n\t\t\t\tresult = 'PayStubView';\n\t\t\t\tbreak;\n\t\t\tcase 'PayStubTransaction':\n\t\t\t\tresult = 'PayStubTransactionView';\n\t\t\t\tbreak;\n\t\t\tcase 'PayPeriod':\n\t\t\t\tresult = 'PayPeriodsView';\n\t\t\t\tbreak;\n\t\t\tcase 'PayStubAmendment':\n\t\t\t\tresult = 'PayStubAmendmentView';\n\t\t\t\tbreak;\n\t\t\tcase 'Client':\n\t\t\t\tresult = 'ClientView';\n\t\t\t\tbreak;\n\t\t\tcase 'ClientContact':\n\t\t\t\tresult = 'ClientContactView';\n\t\t\t\tbreak;\n\t\t\tcase 'Transaction':\n\t\t\t\tresult = 'InvoiceTransaction';\n\t\t\t\tbreak;\n\t\t\tcase 'UserReviewControl':\n\t\t\t\tresult = 'UserReviewControlView';\n\t\t\t\tbreak;\n\t\t\tcase 'JobVacancy':\n\t\t\t\tresult = 'JobVacancyView';\n\t\t\t\tbreak;\n\t\t\tcase 'JobApplicant':\n\t\t\t\tresult = 'JobApplicantView';\n\t\t\t\tbreak;\n\t\t\tcase 'JobApplication':\n\t\t\t\tresult = 'JobApplicationView';\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tonDoneClick() {\n\t\tvar $this = this;\n\t\tsuper.onDoneClick();\n\t\tthis.saveCurrentStep();\n\t\tthis.stepsWidgetDic[2].name.clearErrorStyle();\n\t\tvar saved_dashlet = this.stepsDataDic[1].saved_dashlet;\n\t\tvar dashlet_type = this.stepsDataDic[1].dashlet_type;\n\t\tvar dasglet_name = this.stepsDataDic[2].name;\n\t\tvar auto_refresh = this.stepsDataDic[2].auto_refresh;\n\t\tvar rows_per_page = this.stepsDataDic[2].rows_per_page;\n\t\tvar height = 200;\n\t\tvar width = 33;\n\t\tif ( dashlet_type === 'custom_report' ) {\n\t\t\twidth = 99;\n\t\t}\n\t\tvar args = {};\n\t\tif ( !dasglet_name ) {\n\t\t\tthis.stepsWidgetDic[2].name.setErrorStyle( 'Dashlet title can\\'t be empty', true );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( dashlet_type == 'custom_list' ) {\n\t\t\tvar view_name = this.stepsDataDic[2].script;\n\t\t\tvar layout_id = this.stepsDataDic[2].layout;\n\t\t\tif ( !saved_dashlet ) {\n\t\t\t\targs.script = 'global_dashboard';\n\t\t\t\targs.name = dasglet_name;\n\t\t\t\targs.is_default = 'false';\n\t\t\t\targs.data = {\n\t\t\t\t\tdashlet_type: dashlet_type,\n\t\t\t\t\tview_name: view_name,\n\t\t\t\t\tlayout_id: layout_id,\n\t\t\t\t\tauto_refresh: auto_refresh,\n\t\t\t\t\theight: height,\n\t\t\t\t\twidth: width,\n\t\t\t\t\trows_per_page: rows_per_page\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\targs = saved_dashlet;\n\t\t\t\targs.name = dasglet_name;\n\t\t\t\targs.is_default = 'false';\n\t\t\t\targs.data.dashlet_type = dashlet_type;\n\t\t\t\targs.data.view_name = view_name;\n\t\t\t\targs.data.layout_id = layout_id;\n\t\t\t\targs.data.auto_refresh = auto_refresh;\n\t\t\t\targs.data.rows_per_page = rows_per_page;\n\t\t\t}\n\t\t} else if ( dashlet_type == 'custom_report' ) {\n\t\t\tvar report = this.stepsDataDic[2].report;\n\t\t\tvar saved_report_id = ( this.stepsDataDic[2].saved_report && this.stepsDataDic[2].saved_report != 0 ) ? this.stepsDataDic[2].saved_report : false;\n\t\t\tvar template = this.stepsDataDic[2].template;\n\t\t\tif ( template === 'saved_report' && !saved_report_id ) {\n\t\t\t\tTAlertManager.showAlert( $.i18n._( 'No saved report!' ) );\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( !saved_dashlet ) {\n\t\t\t\targs.script = 'global_dashboard';\n\t\t\t\targs.name = dasglet_name;\n\t\t\t\targs.is_default = 'false';\n\t\t\t\targs.data = {\n\t\t\t\t\tdashlet_type: dashlet_type,\n\t\t\t\t\treport: report,\n\t\t\t\t\ttemplate: template,\n\t\t\t\t\tsaved_report_id: saved_report_id,\n\t\t\t\t\tauto_refresh: auto_refresh,\n\t\t\t\t\theight: height,\n\t\t\t\t\twidth: width\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\targs = saved_dashlet;\n\t\t\t\targs.name = dasglet_name;\n\t\t\t\targs.is_default = 'false';\n\t\t\t\targs.data.dashlet_type = dashlet_type;\n\t\t\t\targs.data.report = report;\n\t\t\t\targs.data.template = template;\n\t\t\t\targs.data.saved_report_id = saved_report_id;\n\t\t\t\targs.data.auto_refresh = auto_refresh;\n\t\t\t\targs.data.rows_per_page = rows_per_page;\n\t\t\t}\n\t\t} else {\n\t\t\tif ( !saved_dashlet ) {\n\t\t\t\targs.script = 'global_dashboard';\n\t\t\t\targs.name = dasglet_name;\n\t\t\t\targs.is_default = 'false';\n\t\t\t\targs.data = {\n\t\t\t\t\tdashlet_type: dashlet_type,\n\t\t\t\t\tauto_refresh: auto_refresh,\n\t\t\t\t\trows_per_page: rows_per_page,\n\t\t\t\t\theight: height,\n\t\t\t\t\twidth: width\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\targs = saved_dashlet;\n\t\t\t\targs.name = dasglet_name;\n\t\t\t\targs.is_default = 'false';\n\t\t\t\targs.data.dashlet_type = dashlet_type;\n\t\t\t\targs.data.auto_refresh = auto_refresh;\n\t\t\t\targs.data.rows_per_page = rows_per_page;\n\t\t\t}\n\t\t}\n\n\t\tthis.user_generic_data_api.setUserGenericData( args, {\n\t\t\tonResult: function( result ) {\n\t\t\t\tif ( result.isValid() ) {\n\t\t\t\t\t$this.onCloseClick();\n\t\t\t\t\tif ( $this.call_back ) {\n\t\t\t\t\t\t$this.call_back();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tTAlertManager.showErrorAlert( result );\n\t\t\t\t}\n\n\t\t\t}\n\t\t} );\n\t}\n\n\tsaveCurrentStep() {\n\t\tif ( !this.stepsDataDic[this.current_step] ) {\n\t\t\tthis.stepsDataDic[this.current_step] = {};\n\t\t}\n\n\t\tvar current_step_data = this.stepsDataDic[this.current_step];\n\t\tvar current_step_ui = this.stepsWidgetDic[this.current_step];\n\t\tswitch ( this.current_step ) {\n\t\t\tcase 1:\n\t\t\t\tcurrent_step_data.dashlet_type = current_step_ui.dashlet_type.getValue();\n\t\t\t\tbreak;\n\t\t\tcase 2:\n\t\t\t\tvar step_1_data = this.stepsDataDic[1];\n\t\t\t\tif ( step_1_data.dashlet_type == 'custom_list' ) {\n\t\t\t\t\tcurrent_step_data.script = current_step_ui.script.getValue();\n\t\t\t\t\tcurrent_step_data.layout = current_step_ui.layout.getValue();\n\t\t\t\t\tcurrent_step_data.rows_per_page = current_step_ui.rows_per_page.getValue();\n\t\t\t\t\tcurrent_step_data.name = current_step_ui.name.getValue();\n\t\t\t\t} else if ( step_1_data.dashlet_type == 'custom_report' ) {\n\t\t\t\t\tcurrent_step_data.report = current_step_ui.report.getValue();\n\t\t\t\t\tcurrent_step_data.saved_report = current_step_ui.saved_report.getValue();\n\t\t\t\t\tcurrent_step_data.name = current_step_ui.name.getValue();\n\t\t\t\t\tcurrent_step_data.template = current_step_ui.template.getValue();\n\t\t\t\t} else {\n\t\t\t\t\tcurrent_step_data.name = current_step_ui.name.getValue();\n\t\t\t\t\tcurrent_step_data.rows_per_page = current_step_ui.rows_per_page.getValue();\n\t\t\t\t}\n\t\t\t\tcurrent_step_data.auto_refresh = current_step_ui.auto_refresh.getValue();\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tgetProperDashletName( step_1_data ) {\n\t\tvar key = step_1_data['dashlet_type'];\n\t\tvar name = '';\n\t\tswitch ( key ) {\n\t\t\tcase 'request_summary':\n\t\t\t\tname = $.i18n._( 'Request Summary' );\n\t\t\t\tbreak;\n\t\t\tcase 'expense_summary':\n\t\t\t\tname = $.i18n._( 'Expense Summary' );\n\t\t\t\tbreak;\n\t\t\tcase 'message_summary':\n\t\t\t\tname = $.i18n._( 'Message Summary' );\n\t\t\t\tbreak;\n\t\t\tcase 'exception_summary':\n\t\t\t\tname = $.i18n._( 'Exception Summary' );\n\t\t\t\tbreak;\n\t\t}\n\t\treturn name;\n\t}\n\n\tsetDefaultDataToSteps() {\n\t\tif ( !this.default_data ) {\n\t\t\treturn null;\n\t\t}\n\t\tthis.stepsDataDic[1] = {};\n\t\tif ( this.getDefaultData( 'saved_dashlet_id' ) ) {\n\t\t\tthis.stepsDataDic[1].saved_dashlet_id = this.getDefaultData( 'saved_dashlet_id' );\n\t\t} else {\n\t\t\tthis.stepsDataDic[1].saved_dashlet_id = false;\n\t\t}\n\t}\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOLHNCQUFzQixvQkFBb0IsQ0FBQyw2QkFBNkI7QUFDeEU7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTs7QUFFQTtBQUNBLElBQUk7QUFDSjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLENBQUM7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBOztBQUVBO0FBQ0EsSUFBSTtBQUNKOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLENBQUM7QUFDWjtBQUNBO0FBQ0EsV0FBVyxDQUFDO0FBQ1o7QUFDQTtBQUNBLFdBQVcsQ0FBQztBQUNaO0FBQ0E7QUFDQSxXQUFXLENBQUM7QUFDWjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9pbnRlcmZhY2UvaHRtbDUvdmlld3Mvd2l6YXJkL2Rhc2hsZXQvRGFzaGxldFdpemFyZENvbnRyb2xsZXIuanM/OGU0MiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgRGFzaGxldFdpemFyZENvbnRyb2xsZXIgZXh0ZW5kcyBCYXNlV2l6YXJkQ29udHJvbGxlciB7XG5cdGNvbnN0cnVjdG9yKCBvcHRpb25zID0ge30gKSB7XG5cdFx0Xy5kZWZhdWx0cyggb3B0aW9ucywge1xuXHRcdFx0ZWw6ICcud2l6YXJkLWJnJyxcblx0XHRcdHVzZXJfZ2VuZXJpY19kYXRhX2FwaTogbnVsbCxcblx0XHRcdGFwaV91c2VyX3JlcG9ydDogbnVsbCxcblx0XHRcdG51bUFycmF5OiBbXG5cdFx0XHRcdHsgbGFiZWw6ICQuaTE4bi5fKCAnRGVmYXVsdCcgKSwgdmFsdWU6IDAgfSxcblx0XHRcdFx0eyBsYWJlbDogNSwgdmFsdWU6IDUgfSxcblx0XHRcdFx0eyBsYWJlbDogMTAsIHZhbHVlOiAxMCB9LFxuXHRcdFx0XHR7IGxhYmVsOiAxNSwgdmFsdWU6IDE1IH0sXG5cdFx0XHRcdHsgbGFiZWw6IDIwLCB2YWx1ZTogMjAgfSxcblx0XHRcdFx0eyBsYWJlbDogMjUsIHZhbHVlOiAyNSB9LFxuXHRcdFx0XHR7IGxhYmVsOiA1MCwgdmFsdWU6IDUwIH0sXG5cdFx0XHRcdHsgbGFiZWw6IDEwMCwgdmFsdWU6IDEwMCB9LFxuXHRcdFx0XHR7IGxhYmVsOiAyNTAsIHZhbHVlOiAyNTAgfSxcblx0XHRcdFx0eyBsYWJlbDogNTAwLCB2YWx1ZTogNTAwIH0sXG5cdFx0XHRcdHsgbGFiZWw6IDEwMDAsIHZhbHVlOiAxMDAwIH1cblx0XHRcdF1cblx0XHR9ICk7XG5cblx0XHRzdXBlciggb3B0aW9ucyApO1xuXHR9XG5cblx0aW5pdCggb3B0aW9ucyApIHtcblx0XHQvL3RoaXMuX3N1cGVyKCdpbml0aWFsaXplJywgb3B0aW9ucyApO1xuXHRcdHRoaXMudGl0bGUgPSAkLmkxOG4uXyggJ0Rhc2hsZXQgV2l6YXJkJyApO1xuXHRcdHRoaXMuc3RlcHMgPSAyO1xuXHRcdHRoaXMuY3VycmVudF9zdGVwID0gMTtcblx0XHR0aGlzLnVzZXJfZ2VuZXJpY19kYXRhX2FwaSA9IFRUQVBJLkFQSVVzZXJHZW5lcmljRGF0YTtcblx0XHR0aGlzLmFwaV91c2VyX3JlcG9ydCA9IFRUQVBJLkFQSVVzZXJSZXBvcnREYXRhO1xuXHRcdHRoaXMucmVuZGVyKCk7XG5cdH1cblxuXHRyZW5kZXIoKSB7XG5cdFx0c3VwZXIucmVuZGVyKCk7XG5cdFx0dGhpcy5pbml0Q3VycmVudFN0ZXAoKTtcblx0fVxuXG5cdC8vQ3JlYXRlIGVhY2ggcGFnZSBVSVxuXHRidWlsZEN1cnJlbnRTdGVwVUkoKSB7XG5cdFx0dmFyICR0aGlzID0gdGhpcztcblx0XHR0aGlzLnN0ZXBzV2lkZ2V0RGljW3RoaXMuY3VycmVudF9zdGVwXSA9IHt9O1xuXHRcdHRoaXMuY29udGVudF9kaXYuZW1wdHkoKTtcblx0XHR2YXIgY29tYm9ib3g7XG5cblx0XHRzd2l0Y2ggKCB0aGlzLmN1cnJlbnRfc3RlcCApIHtcblx0XHRcdGNhc2UgMTpcblx0XHRcdFx0dmFyIGxhYmVsID0gdGhpcy5nZXRMYWJlbCgpO1xuXHRcdFx0XHRsYWJlbC50ZXh0KCAkLmkxOG4uXyggJ0Nob29zZSB0aGUgdHlwZSBvZiBkYXNobGV0JyApICk7XG5cdFx0XHRcdHRoaXMuY29udGVudF9kaXYuYXBwZW5kKCBsYWJlbCApO1xuXHRcdFx0XHRjb21ib2JveCA9IHRoaXMuZ2V0Q29tYm9Cb3goICdkYXNobGV0X3R5cGUnLCBmYWxzZSApO1xuXHRcdFx0XHRjb21ib2JveC51bmJpbmQoICdmb3JtSXRlbUNoYW5nZScgKS5iaW5kKCAnZm9ybUl0ZW1DaGFuZ2UnLCBmdW5jdGlvbiggZSwgdGFyZ2V0ICkge1xuXHRcdFx0XHRcdCR0aGlzLnN0ZXBzRGF0YURpY1syXSA9IG51bGw7XG5cdFx0XHRcdFx0JHRoaXMuc3RlcHNXaWRnZXREaWNbMl0gPSBudWxsO1xuXHRcdFx0XHR9ICk7XG5cdFx0XHRcdGNvbWJvYm94Lm9mZiggJ2NoYW5nZScgKS5vbiggJ2NoYW5nZScsIGZ1bmN0aW9uKCBlICkge1xuXHRcdFx0XHRcdCR0aGlzLnN0ZXAxQ29tYm9ib3hDaGFuZ2VkKCAkKCBlLnRhcmdldCApLnZhbCgpICk7XG5cdFx0XHRcdH0gKTtcblx0XHRcdFx0dGhpcy5jb250ZW50X2Rpdi5hcHBlbmQoIGNvbWJvYm94ICk7XG5cdFx0XHRcdHRoaXMuc3RlcHNXaWRnZXREaWNbdGhpcy5jdXJyZW50X3N0ZXBdW2NvbWJvYm94LmdldEZpZWxkKCldID0gY29tYm9ib3g7XG5cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIDI6XG5cdFx0XHRcdGxhYmVsID0gdGhpcy5nZXRMYWJlbCgpO1xuXHRcdFx0XHR2YXIgc3RlcF8xX2RhdGEgPSB0aGlzLnN0ZXBzRGF0YURpY1sxXTtcblx0XHRcdFx0dmFyIGZvcm1faXRlbTtcblx0XHRcdFx0dmFyIGZvcm1faXRlbV9sYWJlbDtcblx0XHRcdFx0dmFyIGZvcm1faXRlbV9pbnB1dF9kaXY7XG5cdFx0XHRcdHZhciB0ZXh0SW5wdXQ7XG5cblx0XHRcdFx0aWYgKCBzdGVwXzFfZGF0YS5kYXNobGV0X3R5cGUgPT0gJ2N1c3RvbV9saXN0JyApIHtcblx0XHRcdFx0XHRsYWJlbC50ZXh0KCAkLmkxOG4uXyggJ0Nob29zZSBhIGxpc3QgdmlldyBhbmQgbGF5b3V0IHRvIGRpc3BsYXkgaW4gdGhlIGRhc2hsZXQnICkgKTtcblx0XHRcdFx0XHR0aGlzLmNvbnRlbnRfZGl2LmFwcGVuZCggbGFiZWwgKTtcblxuXHRcdFx0XHRcdC8vIENob29zZSB2aWV3XG5cdFx0XHRcdFx0Zm9ybV9pdGVtID0gJCggR2xvYmFsLmxvYWRXaWRnZXQoICdnbG9iYWwvd2lkZ2V0cy93aXphcmRfZm9ybV9pdGVtL1dpemFyZEZvcm1JdGVtLmh0bWwnICkgKTtcblx0XHRcdFx0XHRmb3JtX2l0ZW1fbGFiZWwgPSBmb3JtX2l0ZW0uZmluZCggJy5mb3JtLWl0ZW0tbGFiZWwnICk7XG5cdFx0XHRcdFx0Zm9ybV9pdGVtX2lucHV0X2RpdiA9IGZvcm1faXRlbS5maW5kKCAnLmZvcm0taXRlbS1pbnB1dC1kaXYnICk7XG5cdFx0XHRcdFx0Y29tYm9ib3ggPSB0aGlzLmdldENvbWJvQm94KCAnc2NyaXB0JywgZmFsc2UgKTtcblx0XHRcdFx0XHRjb21ib2JveC51bmJpbmQoICdmb3JtSXRlbUNoYW5nZScgKS5iaW5kKCAnZm9ybUl0ZW1DaGFuZ2UnLCBmdW5jdGlvbiggZSwgdGFyZ2V0ICkge1xuXHRcdFx0XHRcdFx0JHRoaXMuc2V0TGF5b3V0KCAkdGhpcy5nZXRTY3JpcHROYW1lQnlBUElWaWV3S2V5KCB0YXJnZXQuZ2V0VmFsdWUoKSApICk7XG5cdFx0XHRcdFx0XHQkdGhpcy5zZXREZWZhdWx0TmFtZSggc3RlcF8xX2RhdGEuZGFzaGxldF90eXBlICk7XG5cdFx0XHRcdFx0fSApO1xuXHRcdFx0XHRcdGZvcm1faXRlbV9sYWJlbC50ZXh0KCAkLmkxOG4uXyggJ0xpc3QgVmlldycgKSApO1xuXHRcdFx0XHRcdGZvcm1faXRlbV9pbnB1dF9kaXYuYXBwZW5kKCBjb21ib2JveCApO1xuXHRcdFx0XHRcdHRoaXMuY29udGVudF9kaXYuYXBwZW5kKCBmb3JtX2l0ZW0gKTtcblx0XHRcdFx0XHR0aGlzLnN0ZXBzV2lkZ2V0RGljW3RoaXMuY3VycmVudF9zdGVwXVtjb21ib2JveC5nZXRGaWVsZCgpXSA9IGNvbWJvYm94O1xuXG5cdFx0XHRcdFx0Ly9EYXNobGV0IFRpdGxlXG5cdFx0XHRcdFx0Zm9ybV9pdGVtID0gJCggR2xvYmFsLmxvYWRXaWRnZXQoICdnbG9iYWwvd2lkZ2V0cy93aXphcmRfZm9ybV9pdGVtL1dpemFyZEZvcm1JdGVtLmh0bWwnICkgKTtcblx0XHRcdFx0XHRmb3JtX2l0ZW1fbGFiZWwgPSBmb3JtX2l0ZW0uZmluZCggJy5mb3JtLWl0ZW0tbGFiZWwnICk7XG5cdFx0XHRcdFx0Zm9ybV9pdGVtX2lucHV0X2RpdiA9IGZvcm1faXRlbS5maW5kKCAnLmZvcm0taXRlbS1pbnB1dC1kaXYnICk7XG5cdFx0XHRcdFx0dGV4dElucHV0ID0gdGhpcy5nZXRUZXh0SW5wdXQoICduYW1lJywgZmFsc2UgKTtcblx0XHRcdFx0XHRmb3JtX2l0ZW1fbGFiZWwudGV4dCggJC5pMThuLl8oICdEYXNobGV0IFRpdGxlJyApICk7XG5cdFx0XHRcdFx0Zm9ybV9pdGVtX2lucHV0X2Rpdi5hcHBlbmQoIHRleHRJbnB1dCApO1xuXHRcdFx0XHRcdHRoaXMuY29udGVudF9kaXYuYXBwZW5kKCBmb3JtX2l0ZW0gKTtcblx0XHRcdFx0XHR0aGlzLnN0ZXBzV2lkZ2V0RGljW3RoaXMuY3VycmVudF9zdGVwXVt0ZXh0SW5wdXQuZ2V0RmllbGQoKV0gPSB0ZXh0SW5wdXQ7XG5cblx0XHRcdFx0XHQvL0Nob29zZSBsYXlvdXRcblx0XHRcdFx0XHRmb3JtX2l0ZW0gPSAkKCBHbG9iYWwubG9hZFdpZGdldCggJ2dsb2JhbC93aWRnZXRzL3dpemFyZF9mb3JtX2l0ZW0vV2l6YXJkRm9ybUl0ZW0uaHRtbCcgKSApO1xuXHRcdFx0XHRcdGZvcm1faXRlbV9sYWJlbCA9IGZvcm1faXRlbS5maW5kKCAnLmZvcm0taXRlbS1sYWJlbCcgKTtcblx0XHRcdFx0XHRmb3JtX2l0ZW1faW5wdXRfZGl2ID0gZm9ybV9pdGVtLmZpbmQoICcuZm9ybS1pdGVtLWlucHV0LWRpdicgKTtcblx0XHRcdFx0XHRjb21ib2JveCA9IHRoaXMuZ2V0Q29tYm9Cb3goICdsYXlvdXQnLCBmYWxzZSApO1xuXHRcdFx0XHRcdGNvbWJvYm94LnNldFZhbHVlS2V5KCAnaWQnICk7XG5cdFx0XHRcdFx0Y29tYm9ib3guc2V0TGFiZWxLZXkoICduYW1lJyApO1xuXHRcdFx0XHRcdGZvcm1faXRlbV9sYWJlbC50ZXh0KCAkLmkxOG4uXyggJ1NhdmVkIExheW91dCcgKSApO1xuXHRcdFx0XHRcdGZvcm1faXRlbV9pbnB1dF9kaXYuYXBwZW5kKCBjb21ib2JveCApO1xuXHRcdFx0XHRcdHRoaXMuY29udGVudF9kaXYuYXBwZW5kKCBmb3JtX2l0ZW0gKTtcblx0XHRcdFx0XHR0aGlzLnN0ZXBzV2lkZ2V0RGljW3RoaXMuY3VycmVudF9zdGVwXVtjb21ib2JveC5nZXRGaWVsZCgpXSA9IGNvbWJvYm94O1xuXG5cdFx0XHRcdFx0Ly8gUm93cyBwZXIgcGFnZVxuXHRcdFx0XHRcdGZvcm1faXRlbSA9ICQoIEdsb2JhbC5sb2FkV2lkZ2V0KCAnZ2xvYmFsL3dpZGdldHMvd2l6YXJkX2Zvcm1faXRlbS9XaXphcmRGb3JtSXRlbS5odG1sJyApICk7XG5cdFx0XHRcdFx0Zm9ybV9pdGVtX2xhYmVsID0gZm9ybV9pdGVtLmZpbmQoICcuZm9ybS1pdGVtLWxhYmVsJyApO1xuXHRcdFx0XHRcdGZvcm1faXRlbV9pbnB1dF9kaXYgPSBmb3JtX2l0ZW0uZmluZCggJy5mb3JtLWl0ZW0taW5wdXQtZGl2JyApO1xuXHRcdFx0XHRcdGNvbWJvYm94ID0gdGhpcy5nZXRDb21ib0JveCggJ3Jvd3NfcGVyX3BhZ2UnLCBmYWxzZSApO1xuXHRcdFx0XHRcdGNvbWJvYm94LnNldFNvdXJjZURhdGEoIHRoaXMubnVtQXJyYXkgKTtcblx0XHRcdFx0XHRmb3JtX2l0ZW1fbGFiZWwudGV4dCggJC5pMThuLl8oICdSb3dzIHBlciBwYWdlJyApICk7XG5cdFx0XHRcdFx0Zm9ybV9pdGVtX2lucHV0X2Rpdi5hcHBlbmQoIGNvbWJvYm94ICk7XG5cdFx0XHRcdFx0dGhpcy5jb250ZW50X2Rpdi5hcHBlbmQoIGZvcm1faXRlbSApO1xuXHRcdFx0XHRcdHRoaXMuc3RlcHNXaWRnZXREaWNbdGhpcy5jdXJyZW50X3N0ZXBdW2NvbWJvYm94LmdldEZpZWxkKCldID0gY29tYm9ib3g7XG5cblx0XHRcdFx0fSBlbHNlIGlmICggc3RlcF8xX2RhdGEuZGFzaGxldF90eXBlID09ICdjdXN0b21fcmVwb3J0JyApIHtcblx0XHRcdFx0XHRsYWJlbC50ZXh0KCAkLmkxOG4uXyggJ0Nob29zZSBhIHNhdmVkIHJlcG9ydCB0byBkaXNwbGF5IGluIHRoZSBkYXNobGV0JyApICk7XG5cdFx0XHRcdFx0dGhpcy5jb250ZW50X2Rpdi5hcHBlbmQoIGxhYmVsICk7XG5cblx0XHRcdFx0XHQvLyBDaG9vc2UgYSBSZXBvcnRcblx0XHRcdFx0XHRmb3JtX2l0ZW0gPSAkKCBHbG9iYWwubG9hZFdpZGdldCggJ2dsb2JhbC93aWRnZXRzL3dpemFyZF9mb3JtX2l0ZW0vV2l6YXJkRm9ybUl0ZW0uaHRtbCcgKSApO1xuXHRcdFx0XHRcdGZvcm1faXRlbV9sYWJlbCA9IGZvcm1faXRlbS5maW5kKCAnLmZvcm0taXRlbS1sYWJlbCcgKTtcblx0XHRcdFx0XHRmb3JtX2l0ZW1faW5wdXRfZGl2ID0gZm9ybV9pdGVtLmZpbmQoICcuZm9ybS1pdGVtLWlucHV0LWRpdicgKTtcblx0XHRcdFx0XHRjb21ib2JveCA9IHRoaXMuZ2V0Q29tYm9Cb3goICdyZXBvcnQnLCBmYWxzZSApO1xuXHRcdFx0XHRcdGNvbWJvYm94LnVuYmluZCggJ2Zvcm1JdGVtQ2hhbmdlJyApLmJpbmQoICdmb3JtSXRlbUNoYW5nZScsIGZ1bmN0aW9uKCBlLCB0YXJnZXQgKSB7XG5cdFx0XHRcdFx0XHQkdGhpcy5zZXRUZW1wbGF0ZVNvdXJjZSgpO1xuXHRcdFx0XHRcdFx0JHRoaXMuc3RlcHNXaWRnZXREaWNbMl0udGVtcGxhdGUuc2V0VmFsdWUoICdzYXZlZF9yZXBvcnQnICk7XG5cdFx0XHRcdFx0XHQkdGhpcy5zZXRTYXZlZFJlcG9ydCgpO1xuXHRcdFx0XHRcdFx0JHRoaXMuc2V0RGVmYXVsdE5hbWUoIHN0ZXBfMV9kYXRhLmRhc2hsZXRfdHlwZSApO1xuXHRcdFx0XHRcdH0gKTtcblx0XHRcdFx0XHRmb3JtX2l0ZW1fbGFiZWwudGV4dCggJC5pMThuLl8oICdSZXBvcnQnICkgKTtcblx0XHRcdFx0XHRmb3JtX2l0ZW1faW5wdXRfZGl2LmFwcGVuZCggY29tYm9ib3ggKTtcblx0XHRcdFx0XHR0aGlzLmNvbnRlbnRfZGl2LmFwcGVuZCggZm9ybV9pdGVtICk7XG5cdFx0XHRcdFx0dGhpcy5zdGVwc1dpZGdldERpY1t0aGlzLmN1cnJlbnRfc3RlcF1bY29tYm9ib3guZ2V0RmllbGQoKV0gPSBjb21ib2JveDtcblxuXHRcdFx0XHRcdC8vVGVtcGxhdGVcblx0XHRcdFx0XHRmb3JtX2l0ZW0gPSAkKCBHbG9iYWwubG9hZFdpZGdldCggJ2dsb2JhbC93aWRnZXRzL3dpemFyZF9mb3JtX2l0ZW0vV2l6YXJkRm9ybUl0ZW0uaHRtbCcgKSApO1xuXHRcdFx0XHRcdGZvcm1faXRlbV9sYWJlbCA9IGZvcm1faXRlbS5maW5kKCAnLmZvcm0taXRlbS1sYWJlbCcgKTtcblx0XHRcdFx0XHRmb3JtX2l0ZW1faW5wdXRfZGl2ID0gZm9ybV9pdGVtLmZpbmQoICcuZm9ybS1pdGVtLWlucHV0LWRpdicgKTtcblx0XHRcdFx0XHRjb21ib2JveCA9IHRoaXMuZ2V0Q29tYm9Cb3goICd0ZW1wbGF0ZScsIGZhbHNlICk7XG5cdFx0XHRcdFx0Zm9ybV9pdGVtX2xhYmVsLnRleHQoICQuaTE4bi5fKCAnVGVtcGxhdGUnICkgKTtcblx0XHRcdFx0XHRmb3JtX2l0ZW1faW5wdXRfZGl2LmFwcGVuZCggY29tYm9ib3ggKTtcblx0XHRcdFx0XHR0aGlzLmNvbnRlbnRfZGl2LmFwcGVuZCggZm9ybV9pdGVtICk7XG5cdFx0XHRcdFx0dGhpcy5zdGVwc1dpZGdldERpY1t0aGlzLmN1cnJlbnRfc3RlcF1bY29tYm9ib3guZ2V0RmllbGQoKV0gPSBjb21ib2JveDtcblxuXHRcdFx0XHRcdGNvbWJvYm94LnVuYmluZCggJ2Zvcm1JdGVtQ2hhbmdlJyApLmJpbmQoICdmb3JtSXRlbUNoYW5nZScsIGZ1bmN0aW9uKCBlLCB0YXJnZXQgKSB7XG5cdFx0XHRcdFx0XHQkdGhpcy5zZXRTYXZlZFJlcG9ydCgpO1xuXHRcdFx0XHRcdH0gKTtcblxuXHRcdFx0XHRcdC8vQ2hvb3NlIHNhdmVkIHJlcG9ydFxuXHRcdFx0XHRcdGZvcm1faXRlbSA9ICQoIEdsb2JhbC5sb2FkV2lkZ2V0KCAnZ2xvYmFsL3dpZGdldHMvd2l6YXJkX2Zvcm1faXRlbS9XaXphcmRGb3JtSXRlbS5odG1sJyApICk7XG5cdFx0XHRcdFx0Zm9ybV9pdGVtX2xhYmVsID0gZm9ybV9pdGVtLmZpbmQoICcuZm9ybS1pdGVtLWxhYmVsJyApO1xuXHRcdFx0XHRcdGZvcm1faXRlbV9pbnB1dF9kaXYgPSBmb3JtX2l0ZW0uZmluZCggJy5mb3JtLWl0ZW0taW5wdXQtZGl2JyApO1xuXHRcdFx0XHRcdGNvbWJvYm94ID0gdGhpcy5nZXRDb21ib0JveCggJ3NhdmVkX3JlcG9ydCcsIGZhbHNlICk7XG5cdFx0XHRcdFx0Y29tYm9ib3guc2V0VmFsdWVLZXkoICdpZCcgKTtcblx0XHRcdFx0XHRjb21ib2JveC5zZXRMYWJlbEtleSggJ25hbWUnICk7XG5cdFx0XHRcdFx0Zm9ybV9pdGVtX2xhYmVsLnRleHQoICQuaTE4bi5fKCAnU2F2ZWQgUmVwb3J0JyApICk7XG5cdFx0XHRcdFx0Zm9ybV9pdGVtX2lucHV0X2Rpdi5hcHBlbmQoIGNvbWJvYm94ICk7XG5cdFx0XHRcdFx0dGhpcy5jb250ZW50X2Rpdi5hcHBlbmQoIGZvcm1faXRlbSApO1xuXHRcdFx0XHRcdHRoaXMuc3RlcHNXaWRnZXREaWNbdGhpcy5jdXJyZW50X3N0ZXBdW2NvbWJvYm94LmdldEZpZWxkKCldID0gY29tYm9ib3g7XG5cblx0XHRcdFx0XHQvL0Rhc2hsZXQgVGl0bGVcblx0XHRcdFx0XHRmb3JtX2l0ZW0gPSAkKCBHbG9iYWwubG9hZFdpZGdldCggJ2dsb2JhbC93aWRnZXRzL3dpemFyZF9mb3JtX2l0ZW0vV2l6YXJkRm9ybUl0ZW0uaHRtbCcgKSApO1xuXHRcdFx0XHRcdGZvcm1faXRlbV9sYWJlbCA9IGZvcm1faXRlbS5maW5kKCAnLmZvcm0taXRlbS1sYWJlbCcgKTtcblx0XHRcdFx0XHRmb3JtX2l0ZW1faW5wdXRfZGl2ID0gZm9ybV9pdGVtLmZpbmQoICcuZm9ybS1pdGVtLWlucHV0LWRpdicgKTtcblx0XHRcdFx0XHR0ZXh0SW5wdXQgPSB0aGlzLmdldFRleHRJbnB1dCggJ25hbWUnLCBmYWxzZSApO1xuXHRcdFx0XHRcdGZvcm1faXRlbV9sYWJlbC50ZXh0KCAkLmkxOG4uXyggJ0Rhc2hsZXQgVGl0bGUnICkgKTtcblx0XHRcdFx0XHRmb3JtX2l0ZW1faW5wdXRfZGl2LmFwcGVuZCggdGV4dElucHV0ICk7XG5cdFx0XHRcdFx0dGhpcy5jb250ZW50X2Rpdi5hcHBlbmQoIGZvcm1faXRlbSApO1xuXHRcdFx0XHRcdHRoaXMuc3RlcHNXaWRnZXREaWNbdGhpcy5jdXJyZW50X3N0ZXBdW3RleHRJbnB1dC5nZXRGaWVsZCgpXSA9IHRleHRJbnB1dDtcblxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGxhYmVsLnRleHQoICQuaTE4bi5fKCAnQ2hvb3NlIGRhc2hsZXQgc3BlY2lmaWMgc2V0dGluZ3MnICkgKTtcblx0XHRcdFx0XHR0aGlzLmNvbnRlbnRfZGl2LmFwcGVuZCggbGFiZWwgKTtcblxuXHRcdFx0XHRcdC8vRGFzaGxldCBUaXRsZVxuXHRcdFx0XHRcdGZvcm1faXRlbSA9ICQoIEdsb2JhbC5sb2FkV2lkZ2V0KCAnZ2xvYmFsL3dpZGdldHMvd2l6YXJkX2Zvcm1faXRlbS9XaXphcmRGb3JtSXRlbS5odG1sJyApICk7XG5cdFx0XHRcdFx0Zm9ybV9pdGVtX2xhYmVsID0gZm9ybV9pdGVtLmZpbmQoICcuZm9ybS1pdGVtLWxhYmVsJyApO1xuXHRcdFx0XHRcdGZvcm1faXRlbV9pbnB1dF9kaXYgPSBmb3JtX2l0ZW0uZmluZCggJy5mb3JtLWl0ZW0taW5wdXQtZGl2JyApO1xuXHRcdFx0XHRcdHRleHRJbnB1dCA9IHRoaXMuZ2V0VGV4dElucHV0KCAnbmFtZScsIGZhbHNlICk7XG5cdFx0XHRcdFx0Zm9ybV9pdGVtX2xhYmVsLnRleHQoICQuaTE4bi5fKCAnRGFzaGxldCBUaXRsZScgKSApO1xuXHRcdFx0XHRcdGZvcm1faXRlbV9pbnB1dF9kaXYuYXBwZW5kKCB0ZXh0SW5wdXQgKTtcblx0XHRcdFx0XHR0aGlzLmNvbnRlbnRfZGl2LmFwcGVuZCggZm9ybV9pdGVtICk7XG5cdFx0XHRcdFx0dGhpcy5zdGVwc1dpZGdldERpY1t0aGlzLmN1cnJlbnRfc3RlcF1bdGV4dElucHV0LmdldEZpZWxkKCldID0gdGV4dElucHV0O1xuXG5cdFx0XHRcdFx0Ly8gUm93cyBwZXIgcGFnZVxuXHRcdFx0XHRcdGZvcm1faXRlbSA9ICQoIEdsb2JhbC5sb2FkV2lkZ2V0KCAnZ2xvYmFsL3dpZGdldHMvd2l6YXJkX2Zvcm1faXRlbS9XaXphcmRGb3JtSXRlbS5odG1sJyApICk7XG5cdFx0XHRcdFx0Zm9ybV9pdGVtX2xhYmVsID0gZm9ybV9pdGVtLmZpbmQoICcuZm9ybS1pdGVtLWxhYmVsJyApO1xuXHRcdFx0XHRcdGZvcm1faXRlbV9pbnB1dF9kaXYgPSBmb3JtX2l0ZW0uZmluZCggJy5mb3JtLWl0ZW0taW5wdXQtZGl2JyApO1xuXHRcdFx0XHRcdGNvbWJvYm94ID0gdGhpcy5nZXRDb21ib0JveCggJ3Jvd3NfcGVyX3BhZ2UnLCBmYWxzZSApO1xuXHRcdFx0XHRcdGNvbWJvYm94LnNldFNvdXJjZURhdGEoIHRoaXMubnVtQXJyYXkgKTtcblx0XHRcdFx0XHRmb3JtX2l0ZW1fbGFiZWwudGV4dCggJC5pMThuLl8oICdSb3dzIHBlciBwYWdlJyApICk7XG5cdFx0XHRcdFx0Zm9ybV9pdGVtX2lucHV0X2Rpdi5hcHBlbmQoIGNvbWJvYm94ICk7XG5cdFx0XHRcdFx0dGhpcy5jb250ZW50X2Rpdi5hcHBlbmQoIGZvcm1faXRlbSApO1xuXHRcdFx0XHRcdHRoaXMuc3RlcHNXaWRnZXREaWNbdGhpcy5jdXJyZW50X3N0ZXBdW2NvbWJvYm94LmdldEZpZWxkKCldID0gY29tYm9ib3g7XG5cblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIEF1dG8gcmVmcmVzaFxuXHRcdFx0XHRmb3JtX2l0ZW0gPSAkKCBHbG9iYWwubG9hZFdpZGdldCggJ2dsb2JhbC93aWRnZXRzL3dpemFyZF9mb3JtX2l0ZW0vV2l6YXJkRm9ybUl0ZW0uaHRtbCcgKSApO1xuXHRcdFx0XHRmb3JtX2l0ZW1fbGFiZWwgPSBmb3JtX2l0ZW0uZmluZCggJy5mb3JtLWl0ZW0tbGFiZWwnICk7XG5cdFx0XHRcdGZvcm1faXRlbV9pbnB1dF9kaXYgPSBmb3JtX2l0ZW0uZmluZCggJy5mb3JtLWl0ZW0taW5wdXQtZGl2JyApO1xuXHRcdFx0XHRjb21ib2JveCA9IHRoaXMuZ2V0Q29tYm9Cb3goICdhdXRvX3JlZnJlc2gnLCBmYWxzZSApO1xuXHRcdFx0XHRmb3JtX2l0ZW1fbGFiZWwudGV4dCggJC5pMThuLl8oICdBdXRvIFJlZnJlc2gnICkgKTtcblx0XHRcdFx0Zm9ybV9pdGVtX2lucHV0X2Rpdi5hcHBlbmQoIGNvbWJvYm94ICk7XG5cdFx0XHRcdHRoaXMuY29udGVudF9kaXYuYXBwZW5kKCBmb3JtX2l0ZW0gKTtcblx0XHRcdFx0dGhpcy5zdGVwc1dpZGdldERpY1t0aGlzLmN1cnJlbnRfc3RlcF1bY29tYm9ib3guZ2V0RmllbGQoKV0gPSBjb21ib2JveDtcblxuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cdH1cblxuXHRzdGVwMUNvbWJvYm94Q2hhbmdlZCggdmFsdWUgKSB7XG5cdFx0aWYgKCBHbG9iYWwuZ2V0UHJvZHVjdEVkaXRpb24oKSA8PSAxMCAmJiAoIHZhbHVlID09ICdjdXN0b21fbGlzdCcgfHwgdmFsdWUgPT0gJ2N1c3RvbV9yZXBvcnQnICkgKSB7XG5cdFx0XHRUQWxlcnRNYW5hZ2VyLnNob3dBbGVydCggR2xvYmFsLmdldFVwZ3JhZGVNZXNzYWdlKCksICQuaTE4bi5fKCAnRGVuaWVkJyApICk7XG5cdFx0XHRHbG9iYWwuc2V0V2lkZ2V0RW5hYmxlZCggdGhpcy5uZXh0X2J0biwgZmFsc2UgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0R2xvYmFsLnNldFdpZGdldEVuYWJsZWQoIHRoaXMubmV4dF9idG4sIHRydWUgKTtcblx0XHR9XG5cdH1cblxuXHRzZXREZWZhdWx0TmFtZSggZGFzaGxldF90eXBlICkge1xuXHRcdHZhciBzdGVwXzJfdWkgPSB0aGlzLnN0ZXBzV2lkZ2V0RGljWzJdO1xuXHRcdHZhciBzdGVwXzFfdWkgPSB0aGlzLnN0ZXBzV2lkZ2V0RGljWzFdO1xuXHRcdGlmICggZGFzaGxldF90eXBlID09PSAnY3VzdG9tX2xpc3QnICkge1xuXHRcdFx0c3RlcF8yX3VpLm5hbWUuc2V0VmFsdWUoIHN0ZXBfMl91aS5zY3JpcHQuZ2V0TGFiZWwoKSApO1xuXHRcdH0gZWxzZSBpZiAoIGRhc2hsZXRfdHlwZSA9PT0gJ2N1c3RvbV9yZXBvcnQnICkge1xuXHRcdFx0c3RlcF8yX3VpLm5hbWUuc2V0VmFsdWUoIHN0ZXBfMl91aS5yZXBvcnQuZ2V0TGFiZWwoKSApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRzdGVwXzJfdWkubmFtZS5zZXRWYWx1ZSggc3RlcF8xX3VpLmRhc2hsZXRfdHlwZS5nZXRMYWJlbCgpICk7XG5cdFx0fVxuXHR9XG5cblx0YnVpbGRDdXJyZW50U3RlcERhdGEoKSB7XG5cdFx0dmFyICR0aGlzID0gdGhpcztcblx0XHR2YXIgY3VycmVudF9zdGVwX2RhdGEgPSB0aGlzLnN0ZXBzRGF0YURpY1t0aGlzLmN1cnJlbnRfc3RlcF07XG5cdFx0dmFyIGN1cnJlbnRfc3RlcF91aSA9IHRoaXMuc3RlcHNXaWRnZXREaWNbdGhpcy5jdXJyZW50X3N0ZXBdO1xuXHRcdHZhciBhcGkgPSBUVEFQSS5BUElEYXNoYm9hcmQ7XG5cdFx0c3dpdGNoICggdGhpcy5jdXJyZW50X3N0ZXAgKSB7XG5cdFx0XHRjYXNlIDE6XG5cdFx0XHRcdGFwaS5nZXRPcHRpb25zKCAnZGFzaGxldHMnLCB7XG5cdFx0XHRcdFx0b25SZXN1bHQ6IGZ1bmN0aW9uKCByZXN1bHQgKSB7XG5cdFx0XHRcdFx0XHR2YXIgcmVzdWx0X2RhdGEgPSBHbG9iYWwuYnVpbGRSZWNvcmRBcnJheSggcmVzdWx0LmdldFJlc3VsdCgpICk7XG5cdFx0XHRcdFx0XHRjdXJyZW50X3N0ZXBfdWkuZGFzaGxldF90eXBlLnNldFNvdXJjZURhdGEoIHJlc3VsdF9kYXRhICk7XG5cdFx0XHRcdFx0XHRpZiAoIGN1cnJlbnRfc3RlcF9kYXRhICkge1xuXHRcdFx0XHRcdFx0XHRpZiAoIGN1cnJlbnRfc3RlcF9kYXRhLmRhc2hsZXRfdHlwZSApIHtcblx0XHRcdFx0XHRcdFx0XHRjdXJyZW50X3N0ZXBfdWkuZGFzaGxldF90eXBlLnNldFZhbHVlKCBjdXJyZW50X3N0ZXBfZGF0YS5kYXNobGV0X3R5cGUgKTtcblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRpZiAoIGN1cnJlbnRfc3RlcF9kYXRhLnNhdmVkX2Rhc2hsZXRfaWQgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHQkdGhpcy51c2VyX2dlbmVyaWNfZGF0YV9hcGkuZ2V0VXNlckdlbmVyaWNEYXRhKCB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZpbHRlcl9kYXRhOiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWQ6IGN1cnJlbnRfc3RlcF9kYXRhLnNhdmVkX2Rhc2hsZXRfaWQsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGVsZXRlZDogZmFsc2Vcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0fSwge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRvblJlc3VsdDogZnVuY3Rpb24oIHJlc3VsdCApIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIEdsb2JhbC5pc0FycmF5KCByZXN1bHQuZ2V0UmVzdWx0KCkgKSAmJiByZXN1bHQuZ2V0UmVzdWx0KCkubGVuZ3RoID4gMCApIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGN1cnJlbnRfc3RlcF9kYXRhLnNhdmVkX2Rhc2hsZXQgPSByZXN1bHQuZ2V0UmVzdWx0KClbMF07XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjdXJyZW50X3N0ZXBfdWkuZGFzaGxldF90eXBlLnNldFZhbHVlKCBjdXJyZW50X3N0ZXBfZGF0YS5zYXZlZF9kYXNobGV0LmRhdGEuZGFzaGxldF90eXBlICk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHR9ICk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gKTtcblxuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgMjpcblx0XHRcdFx0aWYgKCB0aGlzLnN0ZXBzRGF0YURpY1sxXS5kYXNobGV0X3R5cGUgPT0gJ2N1c3RvbV9saXN0JyApIHtcblx0XHRcdFx0XHRhcGkuZ2V0T3B0aW9ucyggJ2N1c3RvbV9saXN0Jywge1xuXHRcdFx0XHRcdFx0b25SZXN1bHQ6IGZ1bmN0aW9uKCByZXN1bHQgKSB7XG5cdFx0XHRcdFx0XHRcdHZhciBhcnJheSA9IEdsb2JhbC5idWlsZFJlY29yZEFycmF5KCByZXN1bHQuZ2V0UmVzdWx0KCkgKTtcblx0XHRcdFx0XHRcdFx0Y3VycmVudF9zdGVwX3VpLnNjcmlwdC5zZXRTb3VyY2VEYXRhKCBhcnJheSApO1xuXHRcdFx0XHRcdFx0XHQvL0lmIGhhcyBzYXZlZCBzdGVwcyBkYXRhXG5cdFx0XHRcdFx0XHRcdGlmICggY3VycmVudF9zdGVwX2RhdGEgJiYgY3VycmVudF9zdGVwX2RhdGEuc2NyaXB0ICkge1xuXHRcdFx0XHRcdFx0XHRcdGN1cnJlbnRfc3RlcF91aS5zY3JpcHQuc2V0VmFsdWUoIGN1cnJlbnRfc3RlcF9kYXRhLnNjcmlwdCApO1xuXHRcdFx0XHRcdFx0XHRcdGN1cnJlbnRfc3RlcF91aS5uYW1lLnNldFZhbHVlKCBjdXJyZW50X3N0ZXBfZGF0YS5uYW1lICk7XG5cdFx0XHRcdFx0XHRcdFx0Y3VycmVudF9zdGVwX3VpLnJvd3NfcGVyX3BhZ2Uuc2V0VmFsdWUoIGN1cnJlbnRfc3RlcF9kYXRhLnJvd3NfcGVyX3BhZ2UgKTtcblx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmICggJHRoaXMuc3RlcHNEYXRhRGljWzFdLnNhdmVkX2Rhc2hsZXQgKSB7XG5cdFx0XHRcdFx0XHRcdFx0Y3VycmVudF9zdGVwX3VpLnNjcmlwdC5zZXRWYWx1ZSggJHRoaXMuc3RlcHNEYXRhRGljWzFdLnNhdmVkX2Rhc2hsZXQuZGF0YS52aWV3X25hbWUgKTtcblx0XHRcdFx0XHRcdFx0XHRjdXJyZW50X3N0ZXBfdWkubmFtZS5zZXRWYWx1ZSggJHRoaXMuc3RlcHNEYXRhRGljWzFdLnNhdmVkX2Rhc2hsZXQubmFtZSApO1xuXHRcdFx0XHRcdFx0XHRcdGN1cnJlbnRfc3RlcF91aS5yb3dzX3Blcl9wYWdlLnNldFZhbHVlKCAkdGhpcy5zdGVwc0RhdGFEaWNbMV0uc2F2ZWRfZGFzaGxldC5kYXRhLnJvd3NfcGVyX3BhZ2UgKTtcblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRjdXJyZW50X3N0ZXBfdWkuc2NyaXB0LnNldFZhbHVlKCBhcnJheVswXSApO1xuXHRcdFx0XHRcdFx0XHRcdCR0aGlzLnNldERlZmF1bHROYW1lKCAkdGhpcy5zdGVwc0RhdGFEaWNbMV0uZGFzaGxldF90eXBlICk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0JHRoaXMuc2V0TGF5b3V0KCAkdGhpcy5nZXRTY3JpcHROYW1lQnlBUElWaWV3S2V5KCBjdXJyZW50X3N0ZXBfdWkuc2NyaXB0LmdldFZhbHVlKCkgKSwgY3VycmVudF9zdGVwX3VpLmxheW91dCApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0gKTtcblx0XHRcdFx0fSBlbHNlIGlmICggdGhpcy5zdGVwc0RhdGFEaWNbMV0uZGFzaGxldF90eXBlID09ICdjdXN0b21fcmVwb3J0JyApIHtcblx0XHRcdFx0XHRhcGkuZ2V0T3B0aW9ucyggJ2N1c3RvbV9yZXBvcnQnLCB7XG5cdFx0XHRcdFx0XHRvblJlc3VsdDogZnVuY3Rpb24oIHJlc3VsdCApIHtcblx0XHRcdFx0XHRcdFx0dmFyIGFycmF5ID0gR2xvYmFsLmJ1aWxkUmVjb3JkQXJyYXkoIHJlc3VsdC5nZXRSZXN1bHQoKSApO1xuXHRcdFx0XHRcdFx0XHRpZiAoIGFycmF5Lmxlbmd0aCA9PT0gMCApIHtcblx0XHRcdFx0XHRcdFx0XHRHbG9iYWwuc2V0V2lkZ2V0RW5hYmxlZCggJHRoaXMuZG9uZV9idG4sIGZhbHNlICk7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGN1cnJlbnRfc3RlcF91aS5yZXBvcnQuc2V0U291cmNlRGF0YSggYXJyYXkgKTtcblx0XHRcdFx0XHRcdFx0Ly9JZiBoYXMgc2F2ZWQgc3RlcHMgZGF0YVxuXHRcdFx0XHRcdFx0XHRpZiAoIGN1cnJlbnRfc3RlcF9kYXRhICYmIGN1cnJlbnRfc3RlcF9kYXRhLnJlcG9ydCApIHtcblx0XHRcdFx0XHRcdFx0XHRjdXJyZW50X3N0ZXBfdWkucmVwb3J0LnNldFZhbHVlKCBjdXJyZW50X3N0ZXBfZGF0YS5yZXBvcnQgKTtcblx0XHRcdFx0XHRcdFx0XHRjdXJyZW50X3N0ZXBfdWkubmFtZS5zZXRWYWx1ZSggY3VycmVudF9zdGVwX2RhdGEubmFtZSApO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKCAkdGhpcy5zdGVwc0RhdGFEaWNbMV0uc2F2ZWRfZGFzaGxldCApIHtcblx0XHRcdFx0XHRcdFx0XHRjdXJyZW50X3N0ZXBfdWkucmVwb3J0LnNldFZhbHVlKCAkdGhpcy5zdGVwc0RhdGFEaWNbMV0uc2F2ZWRfZGFzaGxldC5kYXRhLnJlcG9ydCApO1xuXHRcdFx0XHRcdFx0XHRcdGN1cnJlbnRfc3RlcF91aS5uYW1lLnNldFZhbHVlKCAkdGhpcy5zdGVwc0RhdGFEaWNbMV0uc2F2ZWRfZGFzaGxldC5uYW1lICk7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0Y3VycmVudF9zdGVwX3VpLnJlcG9ydC5zZXRWYWx1ZSggYXJyYXkudmFsdWUgKTtcblx0XHRcdFx0XHRcdFx0XHQkdGhpcy5zZXREZWZhdWx0TmFtZSggJHRoaXMuc3RlcHNEYXRhRGljWzFdLmRhc2hsZXRfdHlwZSApO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdCR0aGlzLnNldFRlbXBsYXRlU291cmNlKCBjdXJyZW50X3N0ZXBfdWkucmVwb3J0LmdldFZhbHVlKCkgKTtcblx0XHRcdFx0XHRcdFx0aWYgKCBjdXJyZW50X3N0ZXBfZGF0YSAmJiBjdXJyZW50X3N0ZXBfZGF0YS5yZXBvcnQgKSB7XG5cdFx0XHRcdFx0XHRcdFx0Y3VycmVudF9zdGVwX3VpLnRlbXBsYXRlLnNldFZhbHVlKCBjdXJyZW50X3N0ZXBfZGF0YS50ZW1wbGF0ZSApO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKCAkdGhpcy5zdGVwc0RhdGFEaWNbMV0uc2F2ZWRfZGFzaGxldCApIHtcblx0XHRcdFx0XHRcdFx0XHRjdXJyZW50X3N0ZXBfdWkudGVtcGxhdGUuc2V0VmFsdWUoICR0aGlzLnN0ZXBzRGF0YURpY1sxXS5zYXZlZF9kYXNobGV0LmRhdGEudGVtcGxhdGUgKTtcblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRjdXJyZW50X3N0ZXBfdWkudGVtcGxhdGUuc2V0VmFsdWUoICdzYXZlZF9yZXBvcnQnICk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0JHRoaXMuc2V0U2F2ZWRSZXBvcnQoIGN1cnJlbnRfc3RlcF91aS5yZXBvcnQuZ2V0VmFsdWUoKSwgY3VycmVudF9zdGVwX3VpLnRlbXBsYXRlLmdldFZhbHVlKCkgKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9ICk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0aWYgKCBjdXJyZW50X3N0ZXBfZGF0YSApIHtcblx0XHRcdFx0XHRcdGN1cnJlbnRfc3RlcF91aS5uYW1lLnNldFZhbHVlKCBjdXJyZW50X3N0ZXBfZGF0YS5uYW1lICk7XG5cdFx0XHRcdFx0XHRjdXJyZW50X3N0ZXBfdWkucm93c19wZXJfcGFnZS5zZXRWYWx1ZSggY3VycmVudF9zdGVwX2RhdGEucm93c19wZXJfcGFnZSApO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAoICR0aGlzLnN0ZXBzRGF0YURpY1sxXS5zYXZlZF9kYXNobGV0ICkge1xuXHRcdFx0XHRcdFx0Y3VycmVudF9zdGVwX3VpLm5hbWUuc2V0VmFsdWUoICR0aGlzLnN0ZXBzRGF0YURpY1sxXS5zYXZlZF9kYXNobGV0Lm5hbWUgKTtcblx0XHRcdFx0XHRcdGN1cnJlbnRfc3RlcF91aS5yb3dzX3Blcl9wYWdlLnNldFZhbHVlKCAkdGhpcy5zdGVwc0RhdGFEaWNbMV0uc2F2ZWRfZGFzaGxldC5kYXRhLnJvd3NfcGVyX3BhZ2UgKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0JHRoaXMuc2V0RGVmYXVsdE5hbWUoICR0aGlzLnN0ZXBzRGF0YURpY1sxXS5kYXNobGV0X3R5cGUgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0YXBpLmdldE9wdGlvbnMoICdhdXRvX3JlZnJlc2gnLCB7XG5cdFx0XHRcdFx0b25SZXN1bHQ6IGZ1bmN0aW9uKCByZXN1bHQgKSB7XG5cdFx0XHRcdFx0XHR2YXIgYXJyYXkgPSBHbG9iYWwuYnVpbGRSZWNvcmRBcnJheSggcmVzdWx0LmdldFJlc3VsdCgpICk7XG5cdFx0XHRcdFx0XHRjdXJyZW50X3N0ZXBfdWkuYXV0b19yZWZyZXNoLnNldFNvdXJjZURhdGEoIGFycmF5ICk7XG5cdFx0XHRcdFx0XHQvL0lmIGhhcyBzYXZlZCBzdGVwcyBkYXRhXG5cdFx0XHRcdFx0XHRpZiAoIGN1cnJlbnRfc3RlcF9kYXRhICYmIGN1cnJlbnRfc3RlcF9kYXRhLmF1dG9fcmVmcmVzaCApIHtcblx0XHRcdFx0XHRcdFx0Y3VycmVudF9zdGVwX3VpLmF1dG9fcmVmcmVzaC5zZXRWYWx1ZSggY3VycmVudF9zdGVwX2RhdGEuYXV0b19yZWZyZXNoICk7XG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYgKCAkdGhpcy5zdGVwc0RhdGFEaWNbMV0uc2F2ZWRfZGFzaGxldCApIHtcblx0XHRcdFx0XHRcdFx0Y3VycmVudF9zdGVwX3VpLmF1dG9fcmVmcmVzaC5zZXRWYWx1ZSggJHRoaXMuc3RlcHNEYXRhRGljWzFdLnNhdmVkX2Rhc2hsZXQuZGF0YS5hdXRvX3JlZnJlc2ggKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0fVxuXHR9XG5cblx0c2V0VGVtcGxhdGVTb3VyY2UoKSB7XG5cdFx0dmFyIHN0ZXBfMl93aWRnZXRzID0gdGhpcy5zdGVwc1dpZGdldERpY1syXTtcblx0XHR2YXIgc2NyaXB0ID0gc3RlcF8yX3dpZGdldHMucmVwb3J0LmdldFZhbHVlKCk7XG5cdFx0dmFyIHRlbXBsYXRlX2NvbWJvYm94ID0gc3RlcF8yX3dpZGdldHMudGVtcGxhdGU7XG5cdFx0Ly92YXIgcmVwb3J0X2FwaSA9IG5ldyAoIEFQSUZhY3RvcnkuZ2V0QVBJQ2xhc3MoIHRoaXMucmVwb3J0X2FwaXNbc2NyaXB0XSApICkoKTtcblx0XHQvL3ZhciByZXBvcnRfYXBpID0gVFRBUElbdGhpcy5yZXBvcnRfYXBpc1tzY3JpcHRdXTtcblx0XHR2YXIgcmVwb3J0X2FwaSA9IFRUQVBJWydBUEknICsgc2NyaXB0XTtcblx0XHR2YXIgdGVtcGxhdGVfb3B0aW9uc19yZXN1bHQgPSByZXBvcnRfYXBpLmdldE9wdGlvbnMoICd0ZW1wbGF0ZXMnLCB7IGFzeW5jOiBmYWxzZSB9ICk7XG5cdFx0dmFyIHRlbXBsYXRlcyA9IHRlbXBsYXRlX29wdGlvbnNfcmVzdWx0LmdldFJlc3VsdCgpO1xuXHRcdHRlbXBsYXRlcyA9IEdsb2JhbC5idWlsZFJlY29yZEFycmF5KCB0ZW1wbGF0ZXMgKTtcblx0XHR0ZW1wbGF0ZXMudW5zaGlmdCgge1xuXHRcdFx0ZnVsbHZhbHVlOiAnc2F2ZWRfcmVwb3J0Jyxcblx0XHRcdGlkOiAnc2F2ZWRfcmVwb3J0Jyxcblx0XHRcdGxhYmVsOiAnLS0gJyArICQuaTE4bi5fKCAnU2F2ZWQgUmVwb3J0JyApICsgJyAtLScsXG5cdFx0XHRvcmRlclZhbHVlOiAwLFxuXHRcdFx0dmFsdWU6ICdzYXZlZF9yZXBvcnQnXG5cdFx0fSApO1xuXHRcdHRlbXBsYXRlX2NvbWJvYm94LnNldFNvdXJjZURhdGEoIHRlbXBsYXRlcyApO1xuXHR9XG5cblx0c2V0U2F2ZWRSZXBvcnQoKSB7XG5cdFx0dmFyIHN0ZXBfMl9kYXRhID0gdGhpcy5zdGVwc0RhdGFEaWNbMl07XG5cdFx0dmFyIHN0ZXBfMV9kYXRhID0gdGhpcy5zdGVwc0RhdGFEaWNbMV07XG5cdFx0dmFyIHN0ZXBfMl93aWRnZXRzID0gdGhpcy5zdGVwc1dpZGdldERpY1syXTtcblx0XHR2YXIgbGF5b3V0X2NvbWJvYm94ID0gc3RlcF8yX3dpZGdldHMuc2F2ZWRfcmVwb3J0O1xuXHRcdHZhciBzY3JpcHQgPSBzdGVwXzJfd2lkZ2V0cy5yZXBvcnQuZ2V0VmFsdWUoKTtcblx0XHR2YXIgdGVtcGxhdGUgPSBzdGVwXzJfd2lkZ2V0cy50ZW1wbGF0ZS5nZXRWYWx1ZSgpO1xuXHRcdGlmICggdGVtcGxhdGUgIT09ICdzYXZlZF9yZXBvcnQnICkge1xuXHRcdFx0bGF5b3V0X2NvbWJvYm94LmhpZGUoKTtcblx0XHRcdGxheW91dF9jb21ib2JveC5wYXJlbnQoKS5wYXJlbnQoKS5oaWRlKCk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fSBlbHNlIHtcblx0XHRcdGxheW91dF9jb21ib2JveC5wYXJlbnQoKS5wYXJlbnQoKS5zaG93KCk7XG5cdFx0XHRsYXlvdXRfY29tYm9ib3guc2hvdygpO1xuXHRcdH1cblxuXHRcdHRoaXMuYXBpX3VzZXJfcmVwb3J0LmdldFVzZXJSZXBvcnREYXRhKCB7XG5cdFx0XHRmaWx0ZXJfZGF0YToge1xuXHRcdFx0XHRzY3JpcHQ6IHNjcmlwdFxuXHRcdFx0fVxuXHRcdH0sIHtcblx0XHRcdG9uUmVzdWx0OiBmdW5jdGlvbiggcmVzdWx0ICkge1xuXHRcdFx0XHR2YXIgcmVzdWx0X2RhdGEgPSByZXN1bHQuZ2V0UmVzdWx0KCk7XG5cdFx0XHRcdGlmICggcmVzdWx0X2RhdGEgJiYgcmVzdWx0X2RhdGEubGVuZ3RoID4gMCApIHtcblx0XHRcdFx0XHRyZXN1bHRfZGF0YS5zb3J0KCBmdW5jdGlvbiggYSwgYiApIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIEdsb2JhbC5jb21wYXJlKCBhLCBiLCAnbmFtZScgKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHJlc3VsdF9kYXRhID0gW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRmdWxsVmFsdWU6IDAsXG5cdFx0XHRcdFx0XHRcdGlkOiAwLFxuXHRcdFx0XHRcdFx0XHRuYW1lOiBHbG9iYWwuZW1wdHlfaXRlbSxcblx0XHRcdFx0XHRcdFx0bGFiZWw6IEdsb2JhbC5lbXB0eV9pdGVtLFxuXHRcdFx0XHRcdFx0XHRvcmRlclZhbHVlOiAwLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTogMFxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdF07XG5cdFx0XHRcdH1cblx0XHRcdFx0bGF5b3V0X2NvbWJvYm94LnNldFNvdXJjZURhdGEoIHJlc3VsdF9kYXRhICk7XG5cdFx0XHRcdGlmICggc3RlcF8yX2RhdGEgJiYgc3RlcF8yX2RhdGEubGF5b3V0ICkge1xuXHRcdFx0XHRcdGxheW91dF9jb21ib2JveC5zZXRWYWx1ZSggc3RlcF8yX2RhdGEubGF5b3V0ICk7XG5cdFx0XHRcdH0gZWxzZSBpZiAoIHN0ZXBfMV9kYXRhLnNhdmVkX2Rhc2hsZXQgKSB7XG5cdFx0XHRcdFx0bGF5b3V0X2NvbWJvYm94LnNldFZhbHVlKCBzdGVwXzFfZGF0YS5zYXZlZF9kYXNobGV0LmRhdGEuc2F2ZWRfcmVwb3J0ICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9ICk7XG5cdH1cblxuXHRzZXRMYXlvdXQoIHNjcmlwdCApIHtcblx0XHR2YXIgc3RlcF8yX2RhdGEgPSB0aGlzLnN0ZXBzRGF0YURpY1syXTtcblx0XHR2YXIgc3RlcF8xX2RhdGEgPSB0aGlzLnN0ZXBzRGF0YURpY1sxXTtcblx0XHR2YXIgbGF5b3V0X2NvbWJvYm94ID0gdGhpcy5zdGVwc1dpZGdldERpY1syXS5sYXlvdXQ7XG5cdFx0dGhpcy51c2VyX2dlbmVyaWNfZGF0YV9hcGkuZ2V0VXNlckdlbmVyaWNEYXRhKCB7XG5cdFx0XHRmaWx0ZXJfZGF0YToge1xuXHRcdFx0XHRzY3JpcHQ6IHNjcmlwdCxcblx0XHRcdFx0ZGVsZXRlZDogZmFsc2Vcblx0XHRcdH1cblx0XHR9LCB7XG5cdFx0XHRvblJlc3VsdDogZnVuY3Rpb24oIHJlc3VsdCApIHtcblx0XHRcdFx0dmFyIHJlc3VsdF9kYXRhID0gcmVzdWx0LmdldFJlc3VsdCgpO1xuXHRcdFx0XHRpZiAoIHJlc3VsdF9kYXRhICYmIHJlc3VsdF9kYXRhLmxlbmd0aCA+IDAgKSB7XG5cdFx0XHRcdFx0cmVzdWx0X2RhdGEuc29ydCggZnVuY3Rpb24oIGEsIGIgKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBHbG9iYWwuY29tcGFyZSggYSwgYiwgJ25hbWUnICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRyZXN1bHRfZGF0YSA9IFt7IGlkOiAwLCBuYW1lOiAnLSAnICsgJC5pMThuLl8oICdEZWZhdWx0JyApICsgJyAtJyB9XTtcblx0XHRcdFx0fVxuXHRcdFx0XHRsYXlvdXRfY29tYm9ib3guc2V0U291cmNlRGF0YSggcmVzdWx0X2RhdGEgKTtcblx0XHRcdFx0aWYgKCBzdGVwXzJfZGF0YSAmJiBzdGVwXzJfZGF0YS5sYXlvdXQgKSB7XG5cdFx0XHRcdFx0bGF5b3V0X2NvbWJvYm94LnNldFZhbHVlKCBzdGVwXzJfZGF0YS5sYXlvdXQgKTtcblx0XHRcdFx0fSBlbHNlIGlmICggc3RlcF8xX2RhdGEuc2F2ZWRfZGFzaGxldCApIHtcblx0XHRcdFx0XHRsYXlvdXRfY29tYm9ib3guc2V0VmFsdWUoIHN0ZXBfMV9kYXRhLnNhdmVkX2Rhc2hsZXQuZGF0YS5sYXlvdXRfaWQgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9XG5cblx0Z2V0U2NyaXB0TmFtZUJ5QVBJVmlld0tleSgga2V5ICkge1xuXHRcdHZhciByZXN1bHQgPSAnJztcblx0XHRzd2l0Y2ggKCBrZXkgKSB7XG5cdFx0XHRjYXNlICdFeGNlcHRpb24nOlxuXHRcdFx0XHRyZXN1bHQgPSAnZXhjZXB0aW9uVmlldyc7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnUmVxdWVzdCc6XG5cdFx0XHRcdHJlc3VsdCA9ICdSZXF1ZXN0Vmlldyc7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnVXNlcic6XG5cdFx0XHRcdHJlc3VsdCA9ICdFbXBsb3llZVZpZXcnO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ1VzZXJFeHBlbnNlJzpcblx0XHRcdFx0cmVzdWx0ID0gJ1VzZXJFeHBlbnNlVmlldyc7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnU2NoZWR1bGUnOlxuXHRcdFx0XHRyZXN1bHQgPSAnU2NoZWR1bGVTaGlmdFZpZXcnO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ0ludm9pY2UnOlxuXHRcdFx0XHRyZXN1bHQgPSAnSW52b2ljZVZpZXcnO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ1JlcXVlc3QtQXV0aG9yaXphdGlvbic6XG5cdFx0XHRcdHJlc3VsdCA9ICdSZXF1ZXN0QXV0aG9yaXphdGlvblZpZXcnO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ1BheVBlcmlvZFRpbWVTaGVldFZlcmlmeSc6XG5cdFx0XHRcdHJlc3VsdCA9ICdUaW1lU2hlZXRBdXRob3JpemF0aW9uVmlldyc7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnVXNlckV4cGVuc2UtQXV0aG9yaXphdGlvbic6XG5cdFx0XHRcdHJlc3VsdCA9ICdFeHBlbnNlQXV0aG9yaXphdGlvblZpZXcnO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ0FjY3J1YWxCYWxhbmNlJzpcblx0XHRcdFx0cmVzdWx0ID0gJ0FjY3J1YWxCYWxhbmNlVmlldyc7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnQWNjcnVhbCc6XG5cdFx0XHRcdHJlc3VsdCA9ICdBY2NydWFsVmlldyc7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnUmVjdXJyaW5nU2NoZWR1bGVDb250cm9sJzpcblx0XHRcdFx0cmVzdWx0ID0gJ1JlY3VycmluZ1NjaGVkdWxlQ29udHJvbFZpZXcnO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ1JlY3VycmluZ1NjaGVkdWxlVGVtcGxhdGVDb250cm9sJzpcblx0XHRcdFx0cmVzdWx0ID0gJ1JlY3VycmluZ1NjaGVkdWxlVGVtcGxhdGVDb250cm9sVmlldyc7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnSm9iJzpcblx0XHRcdFx0cmVzdWx0ID0gJ0pvYlZpZXcnO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ0pvYkl0ZW0nOlxuXHRcdFx0XHRyZXN1bHQgPSAnSm9iSXRlbVZpZXcnO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ1VzZXJDb250YWN0Jzpcblx0XHRcdFx0cmVzdWx0ID0gJ1VzZXJDb250YWN0Vmlldyc7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnVXNlcldhZ2UnOlxuXHRcdFx0XHRyZXN1bHQgPSAnV2FnZVZpZXcnO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ1BheVN0dWInOlxuXHRcdFx0XHRyZXN1bHQgPSAnUGF5U3R1YlZpZXcnO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ1BheVN0dWJUcmFuc2FjdGlvbic6XG5cdFx0XHRcdHJlc3VsdCA9ICdQYXlTdHViVHJhbnNhY3Rpb25WaWV3Jztcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdQYXlQZXJpb2QnOlxuXHRcdFx0XHRyZXN1bHQgPSAnUGF5UGVyaW9kc1ZpZXcnO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ1BheVN0dWJBbWVuZG1lbnQnOlxuXHRcdFx0XHRyZXN1bHQgPSAnUGF5U3R1YkFtZW5kbWVudFZpZXcnO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ0NsaWVudCc6XG5cdFx0XHRcdHJlc3VsdCA9ICdDbGllbnRWaWV3Jztcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdDbGllbnRDb250YWN0Jzpcblx0XHRcdFx0cmVzdWx0ID0gJ0NsaWVudENvbnRhY3RWaWV3Jztcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdUcmFuc2FjdGlvbic6XG5cdFx0XHRcdHJlc3VsdCA9ICdJbnZvaWNlVHJhbnNhY3Rpb24nO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ1VzZXJSZXZpZXdDb250cm9sJzpcblx0XHRcdFx0cmVzdWx0ID0gJ1VzZXJSZXZpZXdDb250cm9sVmlldyc7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnSm9iVmFjYW5jeSc6XG5cdFx0XHRcdHJlc3VsdCA9ICdKb2JWYWNhbmN5Vmlldyc7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnSm9iQXBwbGljYW50Jzpcblx0XHRcdFx0cmVzdWx0ID0gJ0pvYkFwcGxpY2FudFZpZXcnO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ0pvYkFwcGxpY2F0aW9uJzpcblx0XHRcdFx0cmVzdWx0ID0gJ0pvYkFwcGxpY2F0aW9uVmlldyc7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblxuXHRcdHJldHVybiByZXN1bHQ7XG5cdH1cblxuXHRvbkRvbmVDbGljaygpIHtcblx0XHR2YXIgJHRoaXMgPSB0aGlzO1xuXHRcdHN1cGVyLm9uRG9uZUNsaWNrKCk7XG5cdFx0dGhpcy5zYXZlQ3VycmVudFN0ZXAoKTtcblx0XHR0aGlzLnN0ZXBzV2lkZ2V0RGljWzJdLm5hbWUuY2xlYXJFcnJvclN0eWxlKCk7XG5cdFx0dmFyIHNhdmVkX2Rhc2hsZXQgPSB0aGlzLnN0ZXBzRGF0YURpY1sxXS5zYXZlZF9kYXNobGV0O1xuXHRcdHZhciBkYXNobGV0X3R5cGUgPSB0aGlzLnN0ZXBzRGF0YURpY1sxXS5kYXNobGV0X3R5cGU7XG5cdFx0dmFyIGRhc2dsZXRfbmFtZSA9IHRoaXMuc3RlcHNEYXRhRGljWzJdLm5hbWU7XG5cdFx0dmFyIGF1dG9fcmVmcmVzaCA9IHRoaXMuc3RlcHNEYXRhRGljWzJdLmF1dG9fcmVmcmVzaDtcblx0XHR2YXIgcm93c19wZXJfcGFnZSA9IHRoaXMuc3RlcHNEYXRhRGljWzJdLnJvd3NfcGVyX3BhZ2U7XG5cdFx0dmFyIGhlaWdodCA9IDIwMDtcblx0XHR2YXIgd2lkdGggPSAzMztcblx0XHRpZiAoIGRhc2hsZXRfdHlwZSA9PT0gJ2N1c3RvbV9yZXBvcnQnICkge1xuXHRcdFx0d2lkdGggPSA5OTtcblx0XHR9XG5cdFx0dmFyIGFyZ3MgPSB7fTtcblx0XHRpZiAoICFkYXNnbGV0X25hbWUgKSB7XG5cdFx0XHR0aGlzLnN0ZXBzV2lkZ2V0RGljWzJdLm5hbWUuc2V0RXJyb3JTdHlsZSggJ0Rhc2hsZXQgdGl0bGUgY2FuXFwndCBiZSBlbXB0eScsIHRydWUgKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRpZiAoIGRhc2hsZXRfdHlwZSA9PSAnY3VzdG9tX2xpc3QnICkge1xuXHRcdFx0dmFyIHZpZXdfbmFtZSA9IHRoaXMuc3RlcHNEYXRhRGljWzJdLnNjcmlwdDtcblx0XHRcdHZhciBsYXlvdXRfaWQgPSB0aGlzLnN0ZXBzRGF0YURpY1syXS5sYXlvdXQ7XG5cdFx0XHRpZiAoICFzYXZlZF9kYXNobGV0ICkge1xuXHRcdFx0XHRhcmdzLnNjcmlwdCA9ICdnbG9iYWxfZGFzaGJvYXJkJztcblx0XHRcdFx0YXJncy5uYW1lID0gZGFzZ2xldF9uYW1lO1xuXHRcdFx0XHRhcmdzLmlzX2RlZmF1bHQgPSAnZmFsc2UnO1xuXHRcdFx0XHRhcmdzLmRhdGEgPSB7XG5cdFx0XHRcdFx0ZGFzaGxldF90eXBlOiBkYXNobGV0X3R5cGUsXG5cdFx0XHRcdFx0dmlld19uYW1lOiB2aWV3X25hbWUsXG5cdFx0XHRcdFx0bGF5b3V0X2lkOiBsYXlvdXRfaWQsXG5cdFx0XHRcdFx0YXV0b19yZWZyZXNoOiBhdXRvX3JlZnJlc2gsXG5cdFx0XHRcdFx0aGVpZ2h0OiBoZWlnaHQsXG5cdFx0XHRcdFx0d2lkdGg6IHdpZHRoLFxuXHRcdFx0XHRcdHJvd3NfcGVyX3BhZ2U6IHJvd3NfcGVyX3BhZ2Vcblx0XHRcdFx0fTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGFyZ3MgPSBzYXZlZF9kYXNobGV0O1xuXHRcdFx0XHRhcmdzLm5hbWUgPSBkYXNnbGV0X25hbWU7XG5cdFx0XHRcdGFyZ3MuaXNfZGVmYXVsdCA9ICdmYWxzZSc7XG5cdFx0XHRcdGFyZ3MuZGF0YS5kYXNobGV0X3R5cGUgPSBkYXNobGV0X3R5cGU7XG5cdFx0XHRcdGFyZ3MuZGF0YS52aWV3X25hbWUgPSB2aWV3X25hbWU7XG5cdFx0XHRcdGFyZ3MuZGF0YS5sYXlvdXRfaWQgPSBsYXlvdXRfaWQ7XG5cdFx0XHRcdGFyZ3MuZGF0YS5hdXRvX3JlZnJlc2ggPSBhdXRvX3JlZnJlc2g7XG5cdFx0XHRcdGFyZ3MuZGF0YS5yb3dzX3Blcl9wYWdlID0gcm93c19wZXJfcGFnZTtcblx0XHRcdH1cblx0XHR9IGVsc2UgaWYgKCBkYXNobGV0X3R5cGUgPT0gJ2N1c3RvbV9yZXBvcnQnICkge1xuXHRcdFx0dmFyIHJlcG9ydCA9IHRoaXMuc3RlcHNEYXRhRGljWzJdLnJlcG9ydDtcblx0XHRcdHZhciBzYXZlZF9yZXBvcnRfaWQgPSAoIHRoaXMuc3RlcHNEYXRhRGljWzJdLnNhdmVkX3JlcG9ydCAmJiB0aGlzLnN0ZXBzRGF0YURpY1syXS5zYXZlZF9yZXBvcnQgIT0gMCApID8gdGhpcy5zdGVwc0RhdGFEaWNbMl0uc2F2ZWRfcmVwb3J0IDogZmFsc2U7XG5cdFx0XHR2YXIgdGVtcGxhdGUgPSB0aGlzLnN0ZXBzRGF0YURpY1syXS50ZW1wbGF0ZTtcblx0XHRcdGlmICggdGVtcGxhdGUgPT09ICdzYXZlZF9yZXBvcnQnICYmICFzYXZlZF9yZXBvcnRfaWQgKSB7XG5cdFx0XHRcdFRBbGVydE1hbmFnZXIuc2hvd0FsZXJ0KCAkLmkxOG4uXyggJ05vIHNhdmVkIHJlcG9ydCEnICkgKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCAhc2F2ZWRfZGFzaGxldCApIHtcblx0XHRcdFx0YXJncy5zY3JpcHQgPSAnZ2xvYmFsX2Rhc2hib2FyZCc7XG5cdFx0XHRcdGFyZ3MubmFtZSA9IGRhc2dsZXRfbmFtZTtcblx0XHRcdFx0YXJncy5pc19kZWZhdWx0ID0gJ2ZhbHNlJztcblx0XHRcdFx0YXJncy5kYXRhID0ge1xuXHRcdFx0XHRcdGRhc2hsZXRfdHlwZTogZGFzaGxldF90eXBlLFxuXHRcdFx0XHRcdHJlcG9ydDogcmVwb3J0LFxuXHRcdFx0XHRcdHRlbXBsYXRlOiB0ZW1wbGF0ZSxcblx0XHRcdFx0XHRzYXZlZF9yZXBvcnRfaWQ6IHNhdmVkX3JlcG9ydF9pZCxcblx0XHRcdFx0XHRhdXRvX3JlZnJlc2g6IGF1dG9fcmVmcmVzaCxcblx0XHRcdFx0XHRoZWlnaHQ6IGhlaWdodCxcblx0XHRcdFx0XHR3aWR0aDogd2lkdGhcblx0XHRcdFx0fTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGFyZ3MgPSBzYXZlZF9kYXNobGV0O1xuXHRcdFx0XHRhcmdzLm5hbWUgPSBkYXNnbGV0X25hbWU7XG5cdFx0XHRcdGFyZ3MuaXNfZGVmYXVsdCA9ICdmYWxzZSc7XG5cdFx0XHRcdGFyZ3MuZGF0YS5kYXNobGV0X3R5cGUgPSBkYXNobGV0X3R5cGU7XG5cdFx0XHRcdGFyZ3MuZGF0YS5yZXBvcnQgPSByZXBvcnQ7XG5cdFx0XHRcdGFyZ3MuZGF0YS50ZW1wbGF0ZSA9IHRlbXBsYXRlO1xuXHRcdFx0XHRhcmdzLmRhdGEuc2F2ZWRfcmVwb3J0X2lkID0gc2F2ZWRfcmVwb3J0X2lkO1xuXHRcdFx0XHRhcmdzLmRhdGEuYXV0b19yZWZyZXNoID0gYXV0b19yZWZyZXNoO1xuXHRcdFx0XHRhcmdzLmRhdGEucm93c19wZXJfcGFnZSA9IHJvd3NfcGVyX3BhZ2U7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGlmICggIXNhdmVkX2Rhc2hsZXQgKSB7XG5cdFx0XHRcdGFyZ3Muc2NyaXB0ID0gJ2dsb2JhbF9kYXNoYm9hcmQnO1xuXHRcdFx0XHRhcmdzLm5hbWUgPSBkYXNnbGV0X25hbWU7XG5cdFx0XHRcdGFyZ3MuaXNfZGVmYXVsdCA9ICdmYWxzZSc7XG5cdFx0XHRcdGFyZ3MuZGF0YSA9IHtcblx0XHRcdFx0XHRkYXNobGV0X3R5cGU6IGRhc2hsZXRfdHlwZSxcblx0XHRcdFx0XHRhdXRvX3JlZnJlc2g6IGF1dG9fcmVmcmVzaCxcblx0XHRcdFx0XHRyb3dzX3Blcl9wYWdlOiByb3dzX3Blcl9wYWdlLFxuXHRcdFx0XHRcdGhlaWdodDogaGVpZ2h0LFxuXHRcdFx0XHRcdHdpZHRoOiB3aWR0aFxuXHRcdFx0XHR9O1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0YXJncyA9IHNhdmVkX2Rhc2hsZXQ7XG5cdFx0XHRcdGFyZ3MubmFtZSA9IGRhc2dsZXRfbmFtZTtcblx0XHRcdFx0YXJncy5pc19kZWZhdWx0ID0gJ2ZhbHNlJztcblx0XHRcdFx0YXJncy5kYXRhLmRhc2hsZXRfdHlwZSA9IGRhc2hsZXRfdHlwZTtcblx0XHRcdFx0YXJncy5kYXRhLmF1dG9fcmVmcmVzaCA9IGF1dG9fcmVmcmVzaDtcblx0XHRcdFx0YXJncy5kYXRhLnJvd3NfcGVyX3BhZ2UgPSByb3dzX3Blcl9wYWdlO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHRoaXMudXNlcl9nZW5lcmljX2RhdGFfYXBpLnNldFVzZXJHZW5lcmljRGF0YSggYXJncywge1xuXHRcdFx0b25SZXN1bHQ6IGZ1bmN0aW9uKCByZXN1bHQgKSB7XG5cdFx0XHRcdGlmICggcmVzdWx0LmlzVmFsaWQoKSApIHtcblx0XHRcdFx0XHQkdGhpcy5vbkNsb3NlQ2xpY2soKTtcblx0XHRcdFx0XHRpZiAoICR0aGlzLmNhbGxfYmFjayApIHtcblx0XHRcdFx0XHRcdCR0aGlzLmNhbGxfYmFjaygpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRUQWxlcnRNYW5hZ2VyLnNob3dFcnJvckFsZXJ0KCByZXN1bHQgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9XG5cblx0c2F2ZUN1cnJlbnRTdGVwKCkge1xuXHRcdGlmICggIXRoaXMuc3RlcHNEYXRhRGljW3RoaXMuY3VycmVudF9zdGVwXSApIHtcblx0XHRcdHRoaXMuc3RlcHNEYXRhRGljW3RoaXMuY3VycmVudF9zdGVwXSA9IHt9O1xuXHRcdH1cblxuXHRcdHZhciBjdXJyZW50X3N0ZXBfZGF0YSA9IHRoaXMuc3RlcHNEYXRhRGljW3RoaXMuY3VycmVudF9zdGVwXTtcblx0XHR2YXIgY3VycmVudF9zdGVwX3VpID0gdGhpcy5zdGVwc1dpZGdldERpY1t0aGlzLmN1cnJlbnRfc3RlcF07XG5cdFx0c3dpdGNoICggdGhpcy5jdXJyZW50X3N0ZXAgKSB7XG5cdFx0XHRjYXNlIDE6XG5cdFx0XHRcdGN1cnJlbnRfc3RlcF9kYXRhLmRhc2hsZXRfdHlwZSA9IGN1cnJlbnRfc3RlcF91aS5kYXNobGV0X3R5cGUuZ2V0VmFsdWUoKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIDI6XG5cdFx0XHRcdHZhciBzdGVwXzFfZGF0YSA9IHRoaXMuc3RlcHNEYXRhRGljWzFdO1xuXHRcdFx0XHRpZiAoIHN0ZXBfMV9kYXRhLmRhc2hsZXRfdHlwZSA9PSAnY3VzdG9tX2xpc3QnICkge1xuXHRcdFx0XHRcdGN1cnJlbnRfc3RlcF9kYXRhLnNjcmlwdCA9IGN1cnJlbnRfc3RlcF91aS5zY3JpcHQuZ2V0VmFsdWUoKTtcblx0XHRcdFx0XHRjdXJyZW50X3N0ZXBfZGF0YS5sYXlvdXQgPSBjdXJyZW50X3N0ZXBfdWkubGF5b3V0LmdldFZhbHVlKCk7XG5cdFx0XHRcdFx0Y3VycmVudF9zdGVwX2RhdGEucm93c19wZXJfcGFnZSA9IGN1cnJlbnRfc3RlcF91aS5yb3dzX3Blcl9wYWdlLmdldFZhbHVlKCk7XG5cdFx0XHRcdFx0Y3VycmVudF9zdGVwX2RhdGEubmFtZSA9IGN1cnJlbnRfc3RlcF91aS5uYW1lLmdldFZhbHVlKCk7XG5cdFx0XHRcdH0gZWxzZSBpZiAoIHN0ZXBfMV9kYXRhLmRhc2hsZXRfdHlwZSA9PSAnY3VzdG9tX3JlcG9ydCcgKSB7XG5cdFx0XHRcdFx0Y3VycmVudF9zdGVwX2RhdGEucmVwb3J0ID0gY3VycmVudF9zdGVwX3VpLnJlcG9ydC5nZXRWYWx1ZSgpO1xuXHRcdFx0XHRcdGN1cnJlbnRfc3RlcF9kYXRhLnNhdmVkX3JlcG9ydCA9IGN1cnJlbnRfc3RlcF91aS5zYXZlZF9yZXBvcnQuZ2V0VmFsdWUoKTtcblx0XHRcdFx0XHRjdXJyZW50X3N0ZXBfZGF0YS5uYW1lID0gY3VycmVudF9zdGVwX3VpLm5hbWUuZ2V0VmFsdWUoKTtcblx0XHRcdFx0XHRjdXJyZW50X3N0ZXBfZGF0YS50ZW1wbGF0ZSA9IGN1cnJlbnRfc3RlcF91aS50ZW1wbGF0ZS5nZXRWYWx1ZSgpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGN1cnJlbnRfc3RlcF9kYXRhLm5hbWUgPSBjdXJyZW50X3N0ZXBfdWkubmFtZS5nZXRWYWx1ZSgpO1xuXHRcdFx0XHRcdGN1cnJlbnRfc3RlcF9kYXRhLnJvd3NfcGVyX3BhZ2UgPSBjdXJyZW50X3N0ZXBfdWkucm93c19wZXJfcGFnZS5nZXRWYWx1ZSgpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGN1cnJlbnRfc3RlcF9kYXRhLmF1dG9fcmVmcmVzaCA9IGN1cnJlbnRfc3RlcF91aS5hdXRvX3JlZnJlc2guZ2V0VmFsdWUoKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0fVxuXHR9XG5cblx0Z2V0UHJvcGVyRGFzaGxldE5hbWUoIHN0ZXBfMV9kYXRhICkge1xuXHRcdHZhciBrZXkgPSBzdGVwXzFfZGF0YVsnZGFzaGxldF90eXBlJ107XG5cdFx0dmFyIG5hbWUgPSAnJztcblx0XHRzd2l0Y2ggKCBrZXkgKSB7XG5cdFx0XHRjYXNlICdyZXF1ZXN0X3N1bW1hcnknOlxuXHRcdFx0XHRuYW1lID0gJC5pMThuLl8oICdSZXF1ZXN0IFN1bW1hcnknICk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnZXhwZW5zZV9zdW1tYXJ5Jzpcblx0XHRcdFx0bmFtZSA9ICQuaTE4bi5fKCAnRXhwZW5zZSBTdW1tYXJ5JyApO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ21lc3NhZ2Vfc3VtbWFyeSc6XG5cdFx0XHRcdG5hbWUgPSAkLmkxOG4uXyggJ01lc3NhZ2UgU3VtbWFyeScgKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdleGNlcHRpb25fc3VtbWFyeSc6XG5cdFx0XHRcdG5hbWUgPSAkLmkxOG4uXyggJ0V4Y2VwdGlvbiBTdW1tYXJ5JyApO1xuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cdFx0cmV0dXJuIG5hbWU7XG5cdH1cblxuXHRzZXREZWZhdWx0RGF0YVRvU3RlcHMoKSB7XG5cdFx0aWYgKCAhdGhpcy5kZWZhdWx0X2RhdGEgKSB7XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9XG5cdFx0dGhpcy5zdGVwc0RhdGFEaWNbMV0gPSB7fTtcblx0XHRpZiAoIHRoaXMuZ2V0RGVmYXVsdERhdGEoICdzYXZlZF9kYXNobGV0X2lkJyApICkge1xuXHRcdFx0dGhpcy5zdGVwc0RhdGFEaWNbMV0uc2F2ZWRfZGFzaGxldF9pZCA9IHRoaXMuZ2V0RGVmYXVsdERhdGEoICdzYXZlZF9kYXNobGV0X2lkJyApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnN0ZXBzRGF0YURpY1sxXS5zYXZlZF9kYXNobGV0X2lkID0gZmFsc2U7XG5cdFx0fVxuXHR9XG5cbn0iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///9022\n")}}]);