{"version":3,"file":"ExampleTabMappingPage.vue.cjs","sources":["../../../../src/components/examples/ExampleTabMappingPage.vue"],"sourcesContent":["<template>\n  <JPageContainer title=\"회원사 관리\" icon=\"users\" description=\"회원사 정보 및 고객사 매핑을 관리합니다\" :show-help=\"true\" :content-scroll=\"false\" @help=\"onHelp\">\n\n    <!-- ==================== 탭 ==================== -->\n    <JTabs v-model:active-tab-id=\"activeTabId\" :tabs=\"tabs\" @tab-change=\"handleTabChange\">\n      <!-- ==================== Tab 1: 마스터 (회원사 기본정보) ==================== -->\n      <template #content-master>\n        <div class=\"flex flex-col h-full gap-2 p-2\">\n          <!-- 필터바 -->\n          <JFilterBar\n            v-model:collapsed=\"masterFilterCollapsed\"\n            v-model:filter-values=\"masterFilterValues\"\n            :filter-display=\"masterFilterDisplay\"\n            :collapsible=\"true\"\n            title=\"회원사 목록\"\n          >\n            <template #actions>\n              <JButton size=\"xs\" variant=\"outline\" @click=\"onMasterReset\">초기화</JButton>\n              <JButton size=\"xs\" styletype=\"primary\" @click=\"onMasterSearch\">조회</JButton>\n              <JButton size=\"xs\" styletype=\"primary\" @click=\"onMasterNew\">신규</JButton>\n            </template>\n\n            <template #filters>\n              <div class=\"grid grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-2\">\n                <JFormField\n                  v-model=\"masterFilterValues.isActive\"\n                  type=\"combo\"\n                  label=\"활성여부\"\n                  :options=\"activeOptions\"\n                  orientation=\"horizontal\"\n                  label-width=\"30%\"\n                />\n                <JFormField\nv-model=\"masterFilterValues.keyword\" type=\"input\" label=\"검색어\"\n                  orientation=\"horizontal\"\n                  label-width=\"30%\" \n                />\n              </div>\n            </template>\n          </JFilterBar>\n\n          <!-- 그리드 + 상세 영역 (Resizable) -->\n          <JSplitter\n            direction=\"horizontal\"\n            :default-size=\"60\"\n            :min-size=\"30\"\n            :second-min-size=\"20\"\n            :second-max-size=\"60\"\n            class=\"flex-1\"\n          >\n            <!-- 좌측: 그리드 -->\n            <template #left>\n              <div class=\"h-full overflow-auto bg-background\">\n                <JGrid\n                  ref=\"masterGridRef\"\n                  :column-defs=\"masterColumnDefs\"\n                  :row-data=\"masterRowData\"\n                  :action-buttons=\"masterActionButtons\"\n                  :enable-grouping=\"true\"\n                  :enable-pivot=\"true\"\n                  :enable-columns-tool-panel=\"true\"\n                  row-group-panel-show=\"always\"\n                  pivot-panel-show=\"always\"\n                  :group-default-expanded=\"1\"\n                  :compact-footer=\"true\"\n                  @row-clicked=\"onMasterRowClicked\"\n                />\n              </div>\n            </template>\n\n            <!-- 우측: 상세 영역 -->\n            <template #right>\n              <div class=\"h-full overflow-y-auto bg-muted/30\">\n                <!-- 선택된 항목이 없을 때: EmptyState -->\n                <JEmptyState\n                  v-if=\"!masterDetail.memberId && !isMasterNew\"\n                  variant=\"simple\"\n                  icon=\"mousePointerClick\"\n                  title=\"항목을 선택하거나 신규 버튼을 클릭하세요\"\n                  class=\"h-full\"\n                />\n                \n                <!-- 선택된 항목이 있거나 신규일 때: 상세 폼 -->\n                <JCard \n                  v-else\n                  class=\"h-full\" \n                  :title=\"isMasterNew ? '신규 등록' : '상세 정보'\"\n                  variant=\"elevated\"\n                >\n                  <!-- actions 슬롯 (header 우측 버튼) -->\n                  <template #actions>\n                    <JButton size=\"xs\" styletype=\"primary\" @click=\"onMasterSave\">저장</JButton>\n                    <JButton v-if=\"!isMasterNew\" size=\"xs\" variant=\"destructive\" @click=\"onMasterDelete\">삭제</JButton>\n                    <JButton size=\"xs\" variant=\"outline\" @click=\"onMasterReset\">취소</JButton>\n                  </template>\n\n                  <!-- 2열 그리드: 회원사코드, 회원사명 -->\n                  <div class=\"grid grid-cols-1 md:grid-cols-2 gap-2 mt-2\">\n                    <JFormField\n                      v-model=\"masterDetail.memberId\"\n                      type=\"input\"\n                      label=\"회원사코드\"\n                      :readonly=\"!isMasterNew\"\n                      placeholder=\"회원사 코드\"\n                    />\n                    <JFormField\n                      v-model=\"masterDetail.memberName\"\n                      type=\"input\"\n                      label=\"회원사명\"\n                      placeholder=\"회원사 이름\"\n                    />\n                  </div>\n                  <div class=\"grid grid-cols-1 md:grid-cols-2 gap-2 mt-2\">\n                    <!-- 활성여부 -->\n                    <JFormField\n                      v-model=\"masterDetail.isActive\"\n                      type=\"checkbox\"\n                      label=\"활성여부\"\n                      inline-label=\"활성\"\n                    />\n                  </div>\n                </JCard>\n              </div>\n            </template>\n          </JSplitter>\n        </div>\n      </template>\n\n      <!-- ==================== Tab 2: 매핑 (고객사 매핑) ==================== -->\n      <template #content-mapping-customer>\n        <div class=\"flex flex-col h-full gap-2 p-2\">\n          <!-- 필터바 -->\n          <JFilterBar\n            v-model:collapsed=\"mappingFilterCollapsed\"\n            v-model:filter-values=\"mappingFilterValues\"\n            :filter-display=\"mappingFilterDisplay\"\n            :collapsible=\"true\"\n            title=\"회원사별 고객사 매핑\"\n          >\n            <template #actions>\n              <JButton size=\"xs\" variant=\"outline\" @click=\"onMappingReset\">초기화</JButton>\n              <JButton size=\"xs\" styletype=\"primary\" @click=\"onMappingSearch\">조회</JButton>\n            </template>\n\n            <template #filters>\n              <div class=\"grid grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-2\">\n                <JFormField v-model=\"mappingFilterValues.keyword\" type=\"input\" label=\"검색어\" />\n              </div>\n            </template>\n          </JFilterBar>\n\n          <!-- Vertical Splitter: 상단(마스터 그리드) / 하단(매핑 영역) -->\n          <JSplitter\n            direction=\"vertical\"\n            :default-size=\"30\"\n            :min-size=\"20\"\n            :second-min-size=\"40\"\n            class=\"flex-1\"\n          >\n            <!-- 상단: 마스터 그리드 -->\n            <template #top>\n              <div class=\"h-full overflow-auto bg-background\">\n                <JGrid\n                  ref=\"mappingMasterGridRef\"\n                  :column-defs=\"mappingMasterColumnDefs\"\n                  :row-data=\"masterRowData\"\n                  @row-clicked=\"onMappingMasterRowClicked\"\n                />\n              </div>\n            </template>\n\n            <!-- 하단: 매핑 영역 (JShuttle 사용) -->\n            <template #bottom>\n              <div class=\"h-full\">\n                <!-- 회원사 미선택 시: EmptyState -->\n                <JEmptyState\n                  v-if=\"!selectedMemberId\"\n                  variant=\"simple\"\n                  icon=\"arrowLeftRight\"\n                  title=\"상단에서 회원사를 선택하세요\"\n                  class=\"h-full\"\n                />\n                \n                <!-- 회원사 선택 후: Shuttle -->\n                <JShuttle\n                  v-else\n                  v-model:left-data=\"shuttleUnmappedData\"\n                  v-model:right-data=\"shuttleMappedData\"\n                  left-title=\"미매핑 고객사\"\n                  right-title=\"매핑된 고객사\"\n                  :column-defs=\"customerColumnDefs\"\n                  :searchable=\"false\"\n                  @move=\"onShuttleMove\"\n                />\n              </div>\n            </template>\n          </JSplitter>\n        </div>\n      </template>\n    </JTabs>\n  </JPageContainer>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue'\nimport { JCard, JEmptyState } from '@/components/molecules'\nimport { JFilterBar, JShuttle } from '@/components/organisms'\nimport { JGrid, JButton, JSplitter, type ActionButton } from '@/components/atoms'\nimport { JFormField } from '@/components/molecules'\nimport { JTabs } from '@/components/molecules'\n\n// ==================== 탭 상태 ====================\nconst activeTabId = ref('master')\n\nconst tabs = [\n  { id: 'master', label: '회원사 기본정보' },\n  { id: 'mapping-customer', label: '고객사 매핑' },\n]\n\nfunction handleTabChange(tabId: string) {\n  console.log('탭 변경:', tabId)\n}\n\n// ==================== 공통 옵션 ====================\nconst activeOptions = [\n  { value: 'Y', label: 'Y:활성' },\n  { value: 'N', label: 'N:비활성' },\n]\n\n// ==================== Tab 1: 마스터 (회원사) ====================\n\nconst masterFilterCollapsed = ref(false)\nconst masterFilterValues = ref({\n  isActive: '',\n  keyword: '',\n})\n\nconst masterFilterDisplay = {\n  isActive: {\n    label: '활성여부',\n    displayValue: (val: unknown) => {\n      if (val === 'Y') return 'Y:활성'\n      if (val === 'N') return 'N:비활성'\n      return ''\n    },\n  },\n  keyword: {\n    label: '검색어',\n  },\n}\n\n// Mock 데이터 - 회원사 목록\nconst masterRowData = ref([\n  { memberId: 'M001', memberName: '제이솔루션', isActive: 'Y' },\n  { memberId: 'M002', memberName: 'ABC물류', isActive: 'Y' },\n  { memberId: 'M003', memberName: 'XYZ유통', isActive: 'N' },\n])\n\nconst masterColumnDefs = ref([\n  { \n    field: 'memberId', \n    headerName: '회원사코드', \n    width: 150,\n    enableValue: true,  // 집계 가능 (count)\n  },\n  { \n    field: 'memberName', \n    headerName: '회원사명', \n    flex: 1,\n    enableValue: true,  // 집계 가능 (count)\n  },\n  {\n    field: 'isActive',\n    headerName: '활성',\n    width: 100,\n    cellRenderer: (params: any) => (params.value === 'Y' ? '✓' : ''),\n    enableRowGroup: true,  // Row Group으로 사용 가능\n    enablePivot: true,     // Pivot Column으로 사용 가능\n  },\n])\n\n// 마스터 탭 행별 액션 버튼\nconst masterActionButtons: ActionButton[] = [\n  {\n    icon: 'pencil',\n    label: '수정',\n    tooltip: '편집',\n    onClick: (rowData: any) => {\n      isMasterNew.value = false\n      masterDetail.value = {\n        memberId: rowData.memberId,\n        memberName: rowData.memberName,\n        isActive: rowData.isActive,\n      }\n    },\n  },\n  {\n    icon: 'trash2',\n    label: '삭제',\n    tooltip: '삭제',\n    styletype: 'danger',\n    onClick: (rowData: any) => {\n      if (confirm(`${rowData.memberName}을(를) 삭제하시겠습니까?`)) {\n        console.log('회원사 삭제:', rowData.memberId)\n        alert(`삭제되었습니다: ${rowData.memberName}`)\n      }\n    },\n  },\n]\n\nconst masterGridRef = ref()\nconst isMasterNew = ref(false)\nconst masterDetail = ref({\n  memberId: '',\n  memberName: '',\n  isActive: 'Y',\n})\n\nfunction onMasterRowClicked(event: any) {\n  isMasterNew.value = false\n  masterDetail.value = {\n    memberId: event.data.memberId,\n    memberName: event.data.memberName,\n    isActive: event.data.isActive,\n  }\n}\n\nfunction onMasterNew() {\n  isMasterNew.value = true\n  masterDetail.value = {\n    memberId: '',\n    memberName: '',\n    isActive: 'Y',\n  }\n}\n\nfunction onMasterSave() {\n  console.log('회원사 저장:', masterDetail.value)\n  // TODO: 실제 구현 시 API 호출로 대체\n  alert(`저장되었습니다: ${masterDetail.value.memberName}`)\n}\n\nfunction onMasterDelete() {\n  if (confirm(`${masterDetail.value.memberName}을(를) 삭제하시겠습니까?`)) {\n    console.log('회원사 삭제:', masterDetail.value.memberId)\n    // TODO: 실제 구현 시 API 호출로 대체\n    alert(`삭제되었습니다: ${masterDetail.value.memberName}`)\n  }\n}\n\nfunction onMasterReset() {\n  masterFilterValues.value = {\n    isActive: '',\n    keyword: '',\n  }\n}\n\nfunction onMasterSearch() {\n  console.log('회원사 조회:', masterFilterValues.value)\n  // TODO: 실제 구현 시 API 호출로 대체\n}\n\nfunction onHelp() {\n  alert('회원사 관리 페이지 도움말')\n}\n\n// ==================== Tab 2: 매핑 (고객사) ====================\n\nconst mappingFilterCollapsed = ref(false)\nconst mappingFilterValues = ref({\n  keyword: '',\n})\n\nconst mappingFilterDisplay = {\n  keyword: {\n    label: '검색어',\n  },\n}\n\nconst mappingMasterGridRef = ref()\n\nconst mappingMasterColumnDefs = ref([\n  { field: 'memberId', headerName: '회원사코드', width: 150 },\n  { field: 'memberName', headerName: '회원사명', flex: 1 },\n])\n\n// Mock 데이터 - 전체 고객사 (매핑 여부 포함)\nconst selectedMemberId = ref<string>('')\n\n// Mock 데이터 - 회원사별 매핑 정보\nconst mappingData = ref<Record<string, string[]>>({\n  M001: ['C001', 'C002'], // 제이솔루션에 매핑된 고객사\n  M002: ['C003'], // ABC물류에 매핑된 고객사\n  M003: [], // XYZ유통에 매핑된 고객사 없음\n})\n\nconst allCustomersData = [\n  { id: 'C001', code: 'C001', name: '고객A' },\n  { id: 'C002', code: 'C002', name: '고객B' },\n  { id: 'C003', code: 'C003', name: '고객C' },\n  { id: 'C004', code: 'C004', name: '고객D' },\n  { id: 'C005', code: 'C005', name: '고객E' },\n]\n\nconst customerColumnDefs = ref([\n  { field: 'code', headerName: '코드', width: 120 },\n  { field: 'name', headerName: '이름', flex: 1 },\n])\n\n// JShuttle용 데이터\nconst shuttleUnmappedData = ref<any[]>([])\nconst shuttleMappedData = ref<any[]>([])\n\nfunction onMappingMasterRowClicked(event: any) {\n  selectedMemberId.value = event.data.memberId\n  console.log('선택된 회원사:', event.data.memberName)\n  \n  // JShuttle 데이터 업데이트\n  const mappedCodes = mappingData.value[event.data.memberId] || []\n  shuttleUnmappedData.value = allCustomersData.filter((c) => !mappedCodes.includes(c.code))\n  shuttleMappedData.value = allCustomersData.filter((c) => mappedCodes.includes(c.code))\n  \n  // TODO: 실제 구현 시 API 호출로 매핑/미매핑 데이터 로드\n}\n\n/**\n * JShuttle 이동 이벤트 핸들러\n */\nfunction onShuttleMove(event: any) {\n  if (!selectedMemberId.value) {\n    alert('회원사를 먼저 선택해주세요.')\n    return\n  }\n\n  const { items, direction } = event\n  const key = selectedMemberId.value\n\n  if (direction === 'toRight') {\n    // 매핑\n    const codes = items.map((item: any) => item.code)\n    if (!mappingData.value[key]) {\n      mappingData.value[key] = []\n    }\n    mappingData.value[key]!.push(...codes)\n    console.log('매핑:', codes)\n    // TODO: 실제 구현 시 API 호출로 매핑 처리\n  } else {\n    // 해제\n    const codes = items.map((item: any) => item.code)\n    mappingData.value[key] = (mappingData.value[key] || []).filter(\n      (code) => !codes.includes(code)\n    )\n    console.log('해제:', codes)\n    // TODO: 실제 구현 시 API 호출로 매핑 해제 처리\n  }\n}\n\nfunction onMappingReset() {\n  mappingFilterValues.value = {\n    keyword: '',\n  }\n}\n\nfunction onMappingSearch() {\n  console.log('매핑 조회:', mappingFilterValues.value)\n  // TODO: 실제 구현 시 API 호출로 대체\n}\n\ndefineExpose({ masterGridRef, mappingMasterGridRef })\n\n// 초기 데이터 설정 (빈 상태)\nshuttleUnmappedData.value = []\nshuttleMappedData.value = []\n</script>\n"],"names":["activeTabId","ref","tabs","handleTabChange","tabId","activeOptions","masterFilterCollapsed","masterFilterValues","masterFilterDisplay","val","masterRowData","masterColumnDefs","params","masterActionButtons","rowData","isMasterNew","masterDetail","masterGridRef","onMasterRowClicked","event","onMasterNew","onMasterSave","onMasterDelete","onMasterReset","onMasterSearch","onHelp","mappingFilterCollapsed","mappingFilterValues","mappingFilterDisplay","mappingMasterGridRef","mappingMasterColumnDefs","selectedMemberId","mappingData","allCustomersData","customerColumnDefs","shuttleUnmappedData","shuttleMappedData","onMappingMasterRowClicked","mappedCodes","c","onShuttleMove","items","direction","key","codes","item","code","onMappingReset","onMappingSearch","__expose","_createBlock","_component_JPageContainer","_createVNode","_unref","JTabs","$event","_createElementVNode","_hoisted_1","JFilterBar","JButton","_cache","_hoisted_2","JFormField","JSplitter","_hoisted_3","JGrid","_hoisted_4","JEmptyState","JCard","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","JShuttle"],"mappings":"qhEAoNA,MAAMA,EAAcC,EAAAA,IAAI,QAAQ,EAE1BC,EAAO,CACX,CAAE,GAAI,SAAU,MAAO,UAAA,EACvB,CAAE,GAAI,mBAAoB,MAAO,QAAA,CAAS,EAG5C,SAASC,EAAgBC,EAAe,CACtC,QAAQ,IAAI,QAASA,CAAK,CAC5B,CAGA,MAAMC,EAAgB,CACpB,CAAE,MAAO,IAAK,MAAO,MAAA,EACrB,CAAE,MAAO,IAAK,MAAO,OAAA,CAAQ,EAKzBC,EAAwBL,EAAAA,IAAI,EAAK,EACjCM,EAAqBN,EAAAA,IAAI,CAC7B,SAAU,GACV,QAAS,EAAA,CACV,EAEKO,EAAsB,CAC1B,SAAU,CACR,MAAO,OACP,aAAeC,GACTA,IAAQ,IAAY,OACpBA,IAAQ,IAAY,QACjB,EACT,EAEF,QAAS,CACP,MAAO,KAAA,CACT,EAIIC,EAAgBT,EAAAA,IAAI,CACxB,CAAE,SAAU,OAAQ,WAAY,QAAS,SAAU,GAAA,EACnD,CAAE,SAAU,OAAQ,WAAY,QAAS,SAAU,GAAA,EACnD,CAAE,SAAU,OAAQ,WAAY,QAAS,SAAU,GAAA,CAAI,CACxD,EAEKU,EAAmBV,EAAAA,IAAI,CAC3B,CACE,MAAO,WACP,WAAY,QACZ,MAAO,IACP,YAAa,EAAA,EAEf,CACE,MAAO,aACP,WAAY,OACZ,KAAM,EACN,YAAa,EAAA,EAEf,CACE,MAAO,WACP,WAAY,KACZ,MAAO,IACP,aAAeW,GAAiBA,EAAO,QAAU,IAAM,IAAM,GAC7D,eAAgB,GAChB,YAAa,EAAA,CACf,CACD,EAGKC,EAAsC,CAC1C,CACE,KAAM,SACN,MAAO,KACP,QAAS,KACT,QAAUC,GAAiB,CACzBC,EAAY,MAAQ,GACpBC,EAAa,MAAQ,CACnB,SAAUF,EAAQ,SAClB,WAAYA,EAAQ,WACpB,SAAUA,EAAQ,QAAA,CAEtB,CAAA,EAEF,CACE,KAAM,SACN,MAAO,KACP,QAAS,KACT,UAAW,SACX,QAAUA,GAAiB,CACrB,QAAQ,GAAGA,EAAQ,UAAU,gBAAgB,IAC/C,QAAQ,IAAI,UAAWA,EAAQ,QAAQ,EACvC,MAAM,YAAYA,EAAQ,UAAU,EAAE,EAE1C,CAAA,CACF,EAGIG,EAAgBhB,EAAAA,IAAA,EAChBc,EAAcd,EAAAA,IAAI,EAAK,EACvBe,EAAef,EAAAA,IAAI,CACvB,SAAU,GACV,WAAY,GACZ,SAAU,GAAA,CACX,EAED,SAASiB,EAAmBC,EAAY,CACtCJ,EAAY,MAAQ,GACpBC,EAAa,MAAQ,CACnB,SAAUG,EAAM,KAAK,SACrB,WAAYA,EAAM,KAAK,WACvB,SAAUA,EAAM,KAAK,QAAA,CAEzB,CAEA,SAASC,GAAc,CACrBL,EAAY,MAAQ,GACpBC,EAAa,MAAQ,CACnB,SAAU,GACV,WAAY,GACZ,SAAU,GAAA,CAEd,CAEA,SAASK,GAAe,CACtB,QAAQ,IAAI,UAAWL,EAAa,KAAK,EAEzC,MAAM,YAAYA,EAAa,MAAM,UAAU,EAAE,CACnD,CAEA,SAASM,GAAiB,CACpB,QAAQ,GAAGN,EAAa,MAAM,UAAU,gBAAgB,IAC1D,QAAQ,IAAI,UAAWA,EAAa,MAAM,QAAQ,EAElD,MAAM,YAAYA,EAAa,MAAM,UAAU,EAAE,EAErD,CAEA,SAASO,GAAgB,CACvBhB,EAAmB,MAAQ,CACzB,SAAU,GACV,QAAS,EAAA,CAEb,CAEA,SAASiB,GAAiB,CACxB,QAAQ,IAAI,UAAWjB,EAAmB,KAAK,CAEjD,CAEA,SAASkB,GAAS,CAChB,MAAM,gBAAgB,CACxB,CAIA,MAAMC,EAAyBzB,EAAAA,IAAI,EAAK,EAClC0B,EAAsB1B,EAAAA,IAAI,CAC9B,QAAS,EAAA,CACV,EAEK2B,EAAuB,CAC3B,QAAS,CACP,MAAO,KAAA,CACT,EAGIC,EAAuB5B,EAAAA,IAAA,EAEvB6B,EAA0B7B,EAAAA,IAAI,CAClC,CAAE,MAAO,WAAY,WAAY,QAAS,MAAO,GAAA,EACjD,CAAE,MAAO,aAAc,WAAY,OAAQ,KAAM,CAAA,CAAE,CACpD,EAGK8B,EAAmB9B,EAAAA,IAAY,EAAE,EAGjC+B,EAAc/B,EAAAA,IAA8B,CAChD,KAAM,CAAC,OAAQ,MAAM,EACrB,KAAM,CAAC,MAAM,EACb,KAAM,CAAA,CAAC,CACR,EAEKgC,EAAmB,CACvB,CAAE,GAAI,OAAQ,KAAM,OAAQ,KAAM,KAAA,EAClC,CAAE,GAAI,OAAQ,KAAM,OAAQ,KAAM,KAAA,EAClC,CAAE,GAAI,OAAQ,KAAM,OAAQ,KAAM,KAAA,EAClC,CAAE,GAAI,OAAQ,KAAM,OAAQ,KAAM,KAAA,EAClC,CAAE,GAAI,OAAQ,KAAM,OAAQ,KAAM,KAAA,CAAM,EAGpCC,EAAqBjC,EAAAA,IAAI,CAC7B,CAAE,MAAO,OAAQ,WAAY,KAAM,MAAO,GAAA,EAC1C,CAAE,MAAO,OAAQ,WAAY,KAAM,KAAM,CAAA,CAAE,CAC5C,EAGKkC,EAAsBlC,EAAAA,IAAW,EAAE,EACnCmC,EAAoBnC,EAAAA,IAAW,EAAE,EAEvC,SAASoC,EAA0BlB,EAAY,CAC7CY,EAAiB,MAAQZ,EAAM,KAAK,SACpC,QAAQ,IAAI,WAAYA,EAAM,KAAK,UAAU,EAG7C,MAAMmB,EAAcN,EAAY,MAAMb,EAAM,KAAK,QAAQ,GAAK,CAAA,EAC9DgB,EAAoB,MAAQF,EAAiB,OAAQM,GAAM,CAACD,EAAY,SAASC,EAAE,IAAI,CAAC,EACxFH,EAAkB,MAAQH,EAAiB,OAAQM,GAAMD,EAAY,SAASC,EAAE,IAAI,CAAC,CAGvF,CAKA,SAASC,EAAcrB,EAAY,CACjC,GAAI,CAACY,EAAiB,MAAO,CAC3B,MAAM,iBAAiB,EACvB,MACF,CAEA,KAAM,CAAE,MAAAU,EAAO,UAAAC,CAAA,EAAcvB,EACvBwB,EAAMZ,EAAiB,MAE7B,GAAIW,IAAc,UAAW,CAE3B,MAAME,EAAQH,EAAM,IAAKI,GAAcA,EAAK,IAAI,EAC3Cb,EAAY,MAAMW,CAAG,IACxBX,EAAY,MAAMW,CAAG,EAAI,CAAA,GAE3BX,EAAY,MAAMW,CAAG,EAAG,KAAK,GAAGC,CAAK,EACrC,QAAQ,IAAI,MAAOA,CAAK,CAE1B,KAAO,CAEL,MAAMA,EAAQH,EAAM,IAAKI,GAAcA,EAAK,IAAI,EAChDb,EAAY,MAAMW,CAAG,GAAKX,EAAY,MAAMW,CAAG,GAAK,CAAA,GAAI,OACrDG,GAAS,CAACF,EAAM,SAASE,CAAI,CAAA,EAEhC,QAAQ,IAAI,MAAOF,CAAK,CAE1B,CACF,CAEA,SAASG,GAAiB,CACxBpB,EAAoB,MAAQ,CAC1B,QAAS,EAAA,CAEb,CAEA,SAASqB,GAAkB,CACzB,QAAQ,IAAI,SAAUrB,EAAoB,KAAK,CAEjD,CAEA,OAAAsB,EAAa,CAAE,cAAAhC,EAAe,qBAAAY,EAAsB,EAGpDM,EAAoB,MAAQ,CAAA,EAC5BC,EAAkB,MAAQ,CAAA,4EAvdxBc,EAAAA,YAuMiBC,EAAA,CAvMD,MAAM,SAAS,KAAK,QAAQ,YAAY,yBAA0B,YAAW,GAAO,iBAAgB,GAAQ,OAAA1B,CAAA,qBAG1H,IAmMQ,CAnMR2B,cAmMQC,EAAAA,MAAAC,EAAAA,OAAA,EAAA,CAnMO,gBAAetD,EAAA,8CAAAA,EAAW,MAAAuD,GAAG,KAAArD,EAAa,YAAYC,CAAA,GAExD,2BACT,IAsHM,CAtHNqD,EAAAA,mBAsHM,MAtHNC,EAsHM,CApHJL,cA8BaC,EAAAA,MAAAK,EAAAA,OAAA,EAAA,CA7BH,UAAWpD,EAAA,0CAAAA,EAAqB,MAAAiD,GAChC,gBAAehD,EAAA,6CAAAA,EAAkB,MAAAgD,GACxC,iBAAgB/C,EAChB,YAAa,GACd,MAAM,QAAA,GAEK,kBACT,IAAyE,CAAzE4C,cAAyEC,EAAAA,MAAAM,EAAAA,OAAA,EAAA,CAAhE,KAAK,KAAK,QAAQ,UAAW,QAAOpC,CAAA,qBAAe,IAAG,CAAA,GAAAqC,EAAA,EAAA,IAAAA,EAAA,EAAA,EAAA,mBAAH,MAAG,EAAA,CAAA,WAC/DR,cAA2EC,EAAAA,MAAAM,EAAAA,OAAA,EAAA,CAAlE,KAAK,KAAK,UAAU,UAAW,QAAOnC,CAAA,qBAAgB,IAAE,CAAA,GAAAoC,EAAA,EAAA,IAAAA,EAAA,EAAA,EAAA,mBAAF,KAAE,EAAA,CAAA,WACjER,cAAwEC,EAAAA,MAAAM,EAAAA,OAAA,EAAA,CAA/D,KAAK,KAAK,UAAU,UAAW,QAAOvC,CAAA,qBAAa,IAAE,CAAA,GAAAwC,EAAA,EAAA,IAAAA,EAAA,EAAA,EAAA,mBAAF,KAAE,EAAA,CAAA,aAGrD,kBACT,IAcM,CAdNJ,EAAAA,mBAcM,MAdNK,EAcM,CAbJT,cAOEC,EAAAA,MAAAS,EAAAA,OAAA,EAAA,CANS,WAAAvD,EAAA,MAAmB,SAAnB,sBAAAqD,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAAL,GAAAhD,EAAA,MAAmB,SAAQgD,GACpC,KAAK,QACL,MAAM,OACL,QAASlD,EACV,YAAY,aACZ,cAAY,KAAA,yBAEd+C,cAIEC,EAAAA,MAAAS,EAAAA,OAAA,EAAA,CAHT,WAAAvD,EAAA,MAAmB,QAAnB,sBAAAqD,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAAL,GAAAhD,EAAA,MAAmB,QAAOgD,GAAE,KAAK,QAAQ,MAAM,MACtC,YAAY,aACZ,cAAY,KAAA,mEAOpBH,cAkFYC,EAAAA,MAAAU,EAAAA,OAAA,EAAA,CAjFV,UAAU,aACT,eAAc,GACd,WAAU,GACV,kBAAiB,GACjB,kBAAiB,GAClB,MAAM,QAAA,GAGK,eACT,IAeM,CAfNP,EAAAA,mBAeM,MAfNQ,GAeM,CAdJZ,cAaEC,EAAAA,MAAAY,EAAAA,OAAA,EAAA,SAZI,gBAAJ,IAAIhD,EACH,cAAaN,EAAA,MACb,WAAUD,EAAA,MACV,iBAAgBG,EAChB,kBAAiB,GACjB,eAAc,GACd,4BAA2B,GAC5B,uBAAqB,SACrB,mBAAiB,SAChB,yBAAwB,EACxB,iBAAgB,GAChB,aAAaK,CAAA,yCAMT,gBACT,IAkDM,CAlDNsC,EAAAA,mBAkDM,MAlDNU,GAkDM,EA/CKlD,EAAA,MAAa,UAAQ,CAAKD,EAAA,qBADnCmC,EAAAA,YAMEG,EAAAA,MAAAc,EAAAA,OAAA,EAAA,OAJA,QAAQ,SACR,KAAK,oBACL,MAAM,yBACN,MAAM,QAAA,mBAIRjB,EAAAA,YAsCQG,EAAAA,MAAAe,EAAAA,OAAA,EAAA,OApCN,MAAM,SACL,MAAOrD,EAAA,MAAW,QAAA,QACnB,QAAQ,UAAA,GAGG,kBACT,IAAyE,CAAzEqC,cAAyEC,EAAAA,MAAAM,EAAAA,OAAA,EAAA,CAAhE,KAAK,KAAK,UAAU,UAAW,QAAOtC,CAAA,qBAAc,IAAE,CAAA,GAAAuC,EAAA,EAAA,IAAAA,EAAA,EAAA,EAAA,mBAAF,KAAE,EAAA,CAAA,WAC/C7C,EAAA,iDAAhBmC,EAAAA,YAAiGG,EAAAA,MAAAM,EAAAA,OAAA,EAAA,OAApE,KAAK,KAAK,QAAQ,cAAe,QAAOrC,CAAA,qBAAgB,IAAE,CAAA,GAAAsC,EAAA,EAAA,IAAAA,EAAA,EAAA,EAAA,mBAAF,KAAE,EAAA,CAAA,YACvFR,cAAwEC,EAAAA,MAAAM,EAAAA,OAAA,EAAA,CAA/D,KAAK,KAAK,QAAQ,UAAW,QAAOpC,CAAA,qBAAe,IAAE,CAAA,GAAAqC,EAAA,EAAA,IAAAA,EAAA,EAAA,EAAA,mBAAF,KAAE,EAAA,CAAA,+BAIhE,IAcM,CAdNJ,EAAAA,mBAcM,MAdNa,GAcM,CAbJjB,cAMEC,EAAAA,MAAAS,EAAAA,OAAA,EAAA,CALS,WAAA9C,EAAA,MAAa,SAAb,sBAAA4C,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAAL,GAAAvC,EAAA,MAAa,SAAQuC,GAC9B,KAAK,QACL,MAAM,QACL,UAAWxC,EAAA,MACZ,YAAY,QAAA,oCAEdqC,cAKEC,EAAAA,MAAAS,EAAAA,OAAA,EAAA,CAJS,WAAA9C,EAAA,MAAa,WAAb,sBAAA4C,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAAL,GAAAvC,EAAA,MAAa,WAAUuC,GAChC,KAAK,QACL,MAAM,OACN,YAAY,QAAA,2BAGhBC,EAAAA,mBAQM,MARNc,GAQM,CANJlB,cAKEC,EAAAA,MAAAS,EAAAA,OAAA,EAAA,CAJS,WAAA9C,EAAA,MAAa,SAAb,sBAAA4C,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAAL,GAAAvC,EAAA,MAAa,SAAQuC,GAC9B,KAAK,WACL,MAAM,OACN,eAAa,IAAA,8DAWlB,qCACT,IAmEM,CAnENC,EAAAA,mBAmEM,MAnENe,GAmEM,CAjEJnB,cAiBaC,EAAAA,MAAAK,EAAAA,OAAA,EAAA,CAhBH,UAAWhC,EAAA,0CAAAA,EAAsB,MAAA6B,GACjC,gBAAe5B,EAAA,6CAAAA,EAAmB,MAAA4B,GACzC,iBAAgB3B,EAChB,YAAa,GACd,MAAM,aAAA,GAEK,kBACT,IAA0E,CAA1EwB,cAA0EC,EAAAA,MAAAM,EAAAA,OAAA,EAAA,CAAjE,KAAK,KAAK,QAAQ,UAAW,QAAOZ,CAAA,qBAAgB,IAAG,CAAA,GAAAa,EAAA,EAAA,IAAAA,EAAA,EAAA,EAAA,mBAAH,MAAG,EAAA,CAAA,WAChER,cAA4EC,EAAAA,MAAAM,EAAAA,OAAA,EAAA,CAAnE,KAAK,KAAK,UAAU,UAAW,QAAOX,CAAA,qBAAiB,IAAE,CAAA,GAAAY,EAAA,EAAA,IAAAA,EAAA,EAAA,EAAA,mBAAF,KAAE,EAAA,CAAA,aAGzD,kBACT,IAEM,CAFNJ,EAAAA,mBAEM,MAFNgB,GAEM,CADJpB,cAA6EC,EAAAA,MAAAS,EAAAA,OAAA,EAAA,CAAxD,WAAAnC,EAAA,MAAoB,QAApB,sBAAAiC,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAAL,GAAA5B,EAAA,MAAoB,QAAO4B,GAAE,KAAK,QAAQ,MAAM,KAAA,mEAM3EH,cA4CYC,EAAAA,MAAAU,EAAAA,OAAA,EAAA,CA3CV,UAAU,WACT,eAAc,GACd,WAAU,GACV,kBAAiB,GAClB,MAAM,QAAA,GAGK,cACT,IAOM,CAPNP,EAAAA,mBAOM,MAPNiB,GAOM,CANJrB,cAKEC,EAAAA,MAAAY,EAAAA,OAAA,EAAA,SAJI,uBAAJ,IAAIpC,EACH,cAAaC,EAAA,MACb,WAAUpB,EAAA,MACV,aAAa2B,CAAA,yCAMT,iBACT,IAqBM,CArBNmB,EAAAA,mBAqBM,MArBNkB,GAqBM,CAlBK3C,EAAA,qBAQTmB,EAAAA,YASEG,EAAAA,MAAAsB,EAAAA,OAAA,EAAA,OAPQ,YAAWxC,EAAA,2CAAAA,EAAmB,MAAAoB,GAC9B,aAAYnB,EAAA,4CAAAA,EAAiB,MAAAmB,GACrC,aAAW,UACX,cAAY,UACX,cAAarB,EAAA,MACb,WAAY,GACZ,OAAMM,CAAA,mEAjBTU,EAAAA,YAMEG,EAAAA,MAAAc,EAAAA,OAAA,EAAA,OAJA,QAAQ,SACR,KAAK,iBACL,MAAM,kBACN,MAAM,QAAA"}