diff --git a/.env.cas b/.env.cas new file mode 100644 index 0000000..ab26350 --- /dev/null +++ b/.env.cas @@ -0,0 +1,16 @@ +# 页面标题 +VITE_APP_TITLE = 平安水电 + +# CAS 专用构建环境(生产模式) +VITE_APP_ENV = production + +# 生产环境后端前缀 +VITE_APP_BASE_API = '/prod-api' + +# 启用 gzip 压缩 +VITE_BUILD_COMPRESS = gzip + +# CAS 配置(启用CAS模式打包) +VITE_APP_CAS_ENABLE = true +VITE_APP_CAS_SERVER_URL = https://rsso.gxsdxy.cn +VITE_APP_CAS_VALIDATE_URL = https://rsso.gxsdxy.cn/p3/serviceValidate \ No newline at end of file diff --git a/.env.production b/.env.production index ae3f82e..3b751b2 100644 --- a/.env.production +++ b/.env.production @@ -2,10 +2,15 @@ VITE_APP_TITLE = 平安水电 # 生产环境配置 -VITE_APP_ENV = 'production' +VITE_APP_ENV = production # 若依管理系统/生产环境 VITE_APP_BASE_API = '/prod-api' # 是否在打包时开启压缩,支持 gzip 和 brotli -VITE_BUILD_COMPRESS = gzip \ No newline at end of file +VITE_BUILD_COMPRESS = gzip + +# CAS 配置(非CAS模式打包) +VITE_APP_CAS_ENABLE = false +VITE_APP_CAS_SERVER_URL = https://rsso.gxsdxy.cn +VITE_APP_CAS_VALIDATE_URL = https://rsso.gxsdxy.cn/p3/serviceValidate \ No newline at end of file diff --git a/dist.zip b/dist.zip deleted file mode 100644 index a050a4b..0000000 Binary files a/dist.zip and /dev/null differ diff --git a/package.json b/package.json index 34c6e77..d28e7fd 100644 --- a/package.json +++ b/package.json @@ -2,13 +2,14 @@ "name": "ruoyi", "version": "3.8.8", "description": "平安水电", - "author": "若依", + "author": "厚溥", "license": "MIT", "type": "module", "scripts": { "dev": "vite", "build:prod": "vite build", "build:stage": "vite build --mode staging", + "build:cas": "vite build --mode cas", "preview": "vite preview" }, "repository": { diff --git a/src/api/healthcare/outpatientService/patientDiagnosis.js b/src/api/healthcare/outpatientService/patientDiagnosis.js index cfa3f0c..0c4bd59 100644 --- a/src/api/healthcare/outpatientService/patientDiagnosis.js +++ b/src/api/healthcare/outpatientService/patientDiagnosis.js @@ -1,23 +1,30 @@ import request from '@/utils/request' -// 查询患者诊断信息列表 +const defaultYearDate = () => new Date() +const withYearDate = (query) => ({ + yearDate: (query && query.yearDate) || defaultYearDate(), + ...(query || {}) +}) + +// 查询患者诊断信息列�? export function listPatientDiagnosis(query) { return request({ url: '/outpatientService/patientDiagnosis/list', method: 'get', - params: query + params: withYearDate(query) }) } -// 查询患者诊断信息详细 +// 查询患者诊断信息详�? export function getPatientDiagnosis(id) { return request({ url: '/outpatientService/patientDiagnosis/getInfo/' + id, - method: 'get' + method: 'get', + params: { yearDate: defaultYearDate() } }) } -// 新增患者诊断信息 +// 新增患者诊断信�? export function addPatientDiagnosis(data) { return request({ url: '/outpatientService/patientDiagnosis/add', @@ -26,7 +33,7 @@ export function addPatientDiagnosis(data) { }) } -// 修改患者诊断信息 +// 修改患者诊断信�? export function updatePatientDiagnosis(data) { return request({ url: '/outpatientService/patientDiagnosis/update', @@ -35,11 +42,12 @@ export function updatePatientDiagnosis(data) { }) } -// 删除患者诊断信息 +// 删除患者诊断信�? export function delPatientDiagnosis(id) { return request({ url: '/outpatientService/patientDiagnosis/remove/' + id, - method: 'get' + method: 'get', + params: { yearDate: defaultYearDate() } }) } @@ -58,7 +66,7 @@ export function gainDrugPriceList(query) { return request({ url: '/outpatientService/patientDiagnosis/gainDrugPriceList', method: 'get', - params: query + params: withYearDate(query) }) } @@ -67,6 +75,7 @@ export function gainDrugNameList() { return request({ url: '/outpatientService/patientDiagnosis/gainMedicineNameList', method: 'get', + params: { yearDate: defaultYearDate() }, }) } @@ -75,6 +84,7 @@ export function gainDrugNameListName(name) { return request({ url: '/outpatientService/patientDiagnosis/gainMedicineNameListName?name=' + name, method: 'get', + params: { yearDate: defaultYearDate() }, }) } @@ -83,7 +93,7 @@ export function gainMedicineArchiveList(query) { return request({ url: '/outpatientService/patientDiagnosis/gainMedicineArchiveList', method: 'get', - params: query + params: withYearDate(query) }) } @@ -92,27 +102,29 @@ export function gainDrugInventoryList(query) { return request({ url: '/outpatientService/patientDiagnosis/gainDrugInventoryList', method: 'get', - params: query + params: withYearDate(query) }) } -// 修改患者诊断状态 ( 修改为 已发药 ) +// 修改患者诊断状�?( 修改�?已发�?) export function deliverMedicine(id) { return request({ url: '/outpatientService/patientDiagnosis/deliverMedicine/' + id, - method: 'get' + method: 'get', + params: { yearDate: defaultYearDate() } }) } -// 修改患者诊断状态 ( 修改为 已退药 ) +// 修改患者诊断状�?( 修改�?已退�?) export function returnedMedication(id) { return request({ url: '/outpatientService/patientDiagnosis/returnedMedication/' + id, - method: 'get' + method: 'get', + params: { yearDate: defaultYearDate() } }) } -// 保存 患者 诊断 信息 +// 保存 患�?诊断 信息 export function saveDiagnosis(data) { return request({ url: '/outpatientService/patientDiagnosis/save', @@ -121,7 +133,7 @@ export function saveDiagnosis(data) { }) } -// 保存 变成 待发 修改 库存 患者 诊断 信息 +// 保存 变成 待发 修改 库存 患�?诊断 信息 export function saveAddDiagnosis(data) { return request({ url: '/outpatientService/patientDiagnosis/saveAddDiagnosis', @@ -130,7 +142,7 @@ export function saveAddDiagnosis(data) { }) } -// 保存 修改 患者 诊断 信息 +// 保存 修改 患�?诊断 信息 export function saveUpdate(data) { return request({ url: '/outpatientService/patientDiagnosis/saveUpdate', @@ -145,6 +157,7 @@ export function gainPatientDiagnosisListXml() { return request({ url: '/outpatientService/patientDiagnosis/gainPatientDiagnosisListXml', method: 'get', + params: { yearDate: defaultYearDate() }, }) } @@ -153,6 +166,7 @@ export function gainPatientDiagnosisListTotalPriceXml() { return request({ url: '/outpatientService/patientDiagnosis/gainPatientDiagnosisListTotalPriceXml', method: 'get', + params: { yearDate: defaultYearDate() }, }) } @@ -164,7 +178,7 @@ export function obtainSymptomStatisticsNumber(query) { return request({ url: '/outpatientService/patientDiagnosis/obtainSymptomStatisticsNumber', method: 'get', - params: query + params: withYearDate(query) }) } @@ -174,15 +188,33 @@ export function obtainSymptomStatisticsNumberMonth(query) { return request({ url: '/outpatientService/patientDiagnosis/obtainSymptomStatisticsNumberMonth', method: 'get', - params: query + params: withYearDate(query) }) } -// 调用后端的代码判断是否可用医保 -export function verifyInsuranceStatus(idCard,name) { +// 调用后端的代码判断是否可用医�? +export function verifyInsuranceStatus(idCard, name) { return request({ url: '/outpatientService/patientDiagnosis/verify', method: 'get', - params: { idCard,name} + params: withYearDate({ idCard, name }) + }) +} + +// 获取历史医保报销累计金额(按患者ID�? +export function getHistoryReimbursement(patientId, yearDate = new Date()) { + return request({ + url: '/outpatientService/patientDiagnosis/getHistoryReimbursementByYear', + method: 'get', + params: { patientId, yearDate } + }) +} + +// 发药更正:仅调整医保与报销比率 +export function adjustBasic(data) { + return request({ + url: '/outpatientService/patientDiagnosis/adjustBasic', + method: 'post', + data: data }) } diff --git a/src/api/inspection/abnormal.js b/src/api/inspection/abnormal.js new file mode 100644 index 0000000..6e1eb23 --- /dev/null +++ b/src/api/inspection/abnormal.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询巡检异常列表 +export function listAbnormal(query) { + return request({ + url: '/inspection/abnormal/list', + method: 'get', + params: query + }) +} + +// 查询巡检异常详细 +export function getAbnormal(id) { + return request({ + url: '/inspection/abnormal/' + id, + method: 'get' + }) +} + +// 新增巡检异常 +export function addAbnormal(data) { + return request({ + url: '/inspection/abnormal', + method: 'post', + data: data + }) +} + +// 修改巡检异常 +export function updateAbnormal(data) { + return request({ + url: '/inspection/abnormal', + method: 'put', + data: data + }) +} + +// 删除巡检异常 +export function delAbnormal(id) { + return request({ + url: '/inspection/abnormal/' + id, + method: 'delete' + }) +} diff --git a/src/api/inspection/report.js b/src/api/inspection/report.js index 05a4b23..e9b3456 100644 --- a/src/api/inspection/report.js +++ b/src/api/inspection/report.js @@ -33,4 +33,93 @@ export function RoundList(query) { method: 'get', params: query }) - } \ No newline at end of file + } + +// 按天趋势统计 +export function trendDaily(query) { + return request({ + url: '/inspection/report/trendDaily', + method: 'get', + params: query + }) +} + +// 新增:按天双序列 +export function trendDailyDual(query) { + return request({ + url: '/inspection/report/trendDailyDual', + method: 'get', + params: query + }) +} + +// 新增:按月双序列 +export function trendMonthlyDual(query) { + return request({ + url: '/inspection/report/trendMonthlyDual', + method: 'get', + params: query + }) +} + +// 巡检类型占比 +export function typeProportion(query) { + return request({ + url: '/inspection/report/typeProportion', + method: 'get', + params: query + }) +} + +// 覆盖率统计 +export function coverage(query) { + return request({ + url: '/inspection/report/coverage', + method: 'get', + params: query + }) +} + +// 未巡检点清单 +export function uninspectedPoints(query) { + return request({ + url: '/inspection/report/uninspectedPoints', + method: 'get', + params: query + }) +} + +// 点位类型已巡检次数(distinct) +export function pointTypeCounts(query) { + return request({ + url: '/inspection/report/pointTypeCounts', + method: 'get', + params: query + }) +} + +// 点位状态分布 +export function statusDistribution() { + return request({ + url: '/inspection/report/statusDistribution', + method: 'get' + }) +} + +// 巡检人统计(三合一:总/月/日) +export function inspectorStats3(query) { + return request({ + url: '/inspection/report/inspectorStats3', + method: 'get', + params: query + }) +} + +// 巡检点统计(三合一:总/月/日) +export function pointStats3(query) { + return request({ + url: '/inspection/report/pointStats3', + method: 'get', + params: query + }) +} \ No newline at end of file diff --git a/src/api/login.js b/src/api/login.js index 7b7388f..9cd0fcd 100644 --- a/src/api/login.js +++ b/src/api/login.js @@ -57,4 +57,18 @@ export function getCodeImg() { method: 'get', timeout: 20000 }) +} + +// CAS 登录方法(通过请求参数传递 ticket 与 service) +export function casLogin(data) { + return request({ + url: '/cas/login', + headers: { + isToken: false, + repeatSubmit: false + }, + method: 'post', + // 后端使用 @RequestParam 接收参数 + params: data + }) } \ No newline at end of file diff --git a/src/components/Healthcare/OutpatientService/DiagnosisInformation/index.vue b/src/components/Healthcare/OutpatientService/DiagnosisInformation/index.vue index 9240047..2581b17 100644 --- a/src/components/Healthcare/OutpatientService/DiagnosisInformation/index.vue +++ b/src/components/Healthcare/OutpatientService/DiagnosisInformation/index.vue @@ -171,7 +171,7 @@ - + @@ -187,16 +187,16 @@ - + + " label="报销比率" prop="value"> + " @input="calculationWholeTotal()" v-model="form.value" clearable placeholder="请输入报销比率" /> @@ -297,13 +297,27 @@ - + - + -
- 所有药品总价和: {{ totalPriceSum }} 元 +
+ + 应收金额:{{ form.isInsured === 0 ? patientPay : ceilPrice(totalPriceSum) }} 元 + + + 处方总金额:{{ ceilPrice(totalPriceSum) }} 元 + + + 预计报销:{{ Number(currentReimbursement).toFixed(2) }} 元 +
@@ -321,6 +335,16 @@ // const { proxy } = getCurrentInstance() +// 价格向上取整到小数点后两位(进一法) +// 先缩放到整数避免浮点精度问题 +function ceilPrice(value) { + const num = Number(value) + if (isNaN(num)) return '0.00' + const scaled = Math.round(num * 10000) + const cents = Math.ceil(scaled / 100) + return (cents / 100).toFixed(2) +} + // 患者类型 const { healthcare_os_patient_type } = proxy.useDict('healthcare_os_patient_type') // os_patient_type @@ -348,6 +372,8 @@ const form = ref({}) const checkId = ref(0) const totalPriceSum = ref(0) //所有药品总价和 +const currentReimbursement = ref(0) +const patientPay = ref(0) // const props = defineProps({ @@ -593,7 +619,7 @@ const props = defineProps({ { id: 5, name: 'el-row', - description: '6 是否医保 医保率 ', + description: '6 是否医保 报销比率 ', display: true, colList: [ { @@ -614,12 +640,12 @@ const props = defineProps({ { id: 1, name: 'el-col', - description: '6 医保率 col', + description: '6 报销比率 col', display: true, data: [ { id: 0, - name: '医保率', + name: '报销比率', display: true, prohibit: false } @@ -844,11 +870,24 @@ watch( // title.value = '患者诊断信息' // console.log('获取数据111111111111:', form.value) // 更新总价和 - totalPriceSum.value = form.value.prescriptionDetailsList + totalPriceSum.value = ceilPrice(form.value.prescriptionDetailsList .reduce((sum, prescription) => { return sum + prescription.reduce((innerSum, drug) => innerSum + parseFloat(drug.totalPrice || 0), 0) - }, 0) - .toFixed(2) + }, 0)) + const insured = form.value?.isInsured + const sumNum = Number(totalPriceSum.value || 0) + if (insured === 0) { + const rate = Number(form.value?.value || 0) / 100 + const r = isNaN(rate) ? 0 : rate + // 先计算个人应付(向上取整) + const pay = ceilPrice(sumNum * (1 - r)) + patientPay.value = pay + // 预计报销 = 总价 - 个人应付 + currentReimbursement.value = (sumNum - Number(pay)).toFixed(2) + } else { + currentReimbursement.value = '0.00' + patientPay.value = ceilPrice(sumNum) + } }) } ) diff --git a/src/components/Healthcare/OutpatientService/DiagnosisInformation/use.ts b/src/components/Healthcare/OutpatientService/DiagnosisInformation/use.ts index cfd21e4..cbe2624 100644 --- a/src/components/Healthcare/OutpatientService/DiagnosisInformation/use.ts +++ b/src/components/Healthcare/OutpatientService/DiagnosisInformation/use.ts @@ -238,7 +238,7 @@ export default function () { { id: 5, name: "el-row", - description: "6 是否医保 医保率 ", + description: "6 是否医保 报销比率 ", display: true, colList: [ { @@ -259,12 +259,12 @@ export default function () { { id: 1, name: "el-col", - description: "6 医保率 col", + description: "6 报销比率 col", display: true, data: [ { id: 0, - name: "医保率", + name: "报销比率", display: true, prohibit: true, }, @@ -679,7 +679,7 @@ export default function () { { id: 5, name: "el-row", - description: "6 是否医保 医保率 ", + description: "6 是否医保 报销比率 ", display: true, colList: [ { @@ -700,12 +700,12 @@ export default function () { { id: 1, name: "el-col", - description: "6 医保率 col", + description: "6 报销比率 col", display: true, data: [ { id: 0, - name: "医保率", + name: "报销比率", display: true, prohibit: false, }, diff --git a/src/components/Healthcare/OutpatientService/PatientDossier/index.vue b/src/components/Healthcare/OutpatientService/PatientDossier/index.vue index e5abcaf..38a11a6 100644 --- a/src/components/Healthcare/OutpatientService/PatientDossier/index.vue +++ b/src/components/Healthcare/OutpatientService/PatientDossier/index.vue @@ -183,6 +183,7 @@ function selectValue(row) { if (row != null) { console.log('获取患者信息', row) const data = { + id: row.id, patientType: row.patientType, studentId: row.studentId, name: row.name, diff --git a/src/components/Healthcare/OutpatientService/PrescriptionList/index.vue b/src/components/Healthcare/OutpatientService/PrescriptionList/index.vue index 68e0ba6..d60d311 100644 --- a/src/components/Healthcare/OutpatientService/PrescriptionList/index.vue +++ b/src/components/Healthcare/OutpatientService/PrescriptionList/index.vue @@ -274,7 +274,7 @@ }, ]"> - {{ prescription[scope.$index].unitPrice.toFixed(2) }} + {{ Number(prescription[scope.$index].unitPrice || 0).toFixed(2) }} @@ -289,7 +289,13 @@ trigger: controlData[9].check[0].trigger, }, ]"> - {{ prescription[scope.$index].totalPrice.toFixed(2) }}元 + {{ + Number(isInsured) === 0 + ? ceilPrice( + (parseFloat(prescription[scope.$index].totalPrice || 0) * (1 - (parseFloat(reimbursementRate || 0) / 100))) + ) + : ceilPrice(prescription[scope.$index].totalPrice || 0) + }}元 @@ -339,6 +345,16 @@ import { listCommonUsage, listEatingTime, listFrequency } from '@/api/healthcare const { proxy } = getCurrentInstance() +// 价格向上取整到小数点后两位(进一法) +// 先缩放到整数避免浮点精度问题 +function ceilPrice(value) { + const num = Number(value) + if (isNaN(num)) return '0.00' + const scaled = Math.round(num * 10000) + const cents = Math.ceil(scaled / 100) + return (cents / 100).toFixed(2) +} + const { os_patient_type } = proxy.useDict('os_patient_type') // os_patient_type const { os_diagnosis_type } = proxy.useDict('os_diagnosis_type') @@ -390,6 +406,14 @@ const props = defineProps({ prescriptionData: { type: Array }, + isInsured: { + type: [Number, String], + default: 1 + }, + reimbursementRate: { + type: [Number, String], + default: 0 + }, // 控制 纽约 的 显示 隐藏 controlButton: { type: Array, @@ -891,11 +915,10 @@ function calculationTotal(index) { } console.log('totalPrice11111:', form.value.prescription) // 更新总价和 - totalPriceSum.value = form.value.prescription + totalPriceSum.value = ceilPrice(form.value.prescription .reduce((sum, prescri) => { return sum + prescri.reduce((innerSum, drug) => innerSum + parseFloat(drug.totalPrice || 0), 0) - }, 0) - .toFixed(2) + }, 0)) } // 药品 档案 弹框 diff --git a/src/components/ReportAnalytics/CircularDiagram.vue b/src/components/ReportAnalytics/CircularDiagram.vue index f4d7d0e..c4e174e 100644 --- a/src/components/ReportAnalytics/CircularDiagram.vue +++ b/src/components/ReportAnalytics/CircularDiagram.vue @@ -4,7 +4,7 @@ + + diff --git a/src/views/fire/report/index.vue b/src/views/fire/report/index.vue index cb615f7..57e1244 100644 --- a/src/views/fire/report/index.vue +++ b/src/views/fire/report/index.vue @@ -76,7 +76,7 @@ - + - +
fire_facility_type.value || []); const facilityStatuses = computed(() => fire_facility_status.value || []); const isDictLoaded = computed(() => { - // 不仅判断长度,还要验证是否包含有效数据(避免空数组误判) + // 不仅判断长度,还要验证是否包含有效数据(避免空数组误判) return facilityTypes.value.length > 0 && facilityStatuses.value.length > 0 && facilityTypes.value.some(item => item.value !== undefined) && @@ -183,7 +183,7 @@ const detailDialog = ref(false); const dialogTitle = ref(""); // 弹窗类型标识 -const dialogType = ref(""); // 'total' 表示总数弹窗,'status' 表示状态弹窗 +const dialogType = ref(""); // 'total' 表示总数弹窗,'status' 表示状态弹窗 const currentStatusValue = ref(null); // 分页配置 @@ -193,15 +193,15 @@ const pagination = reactive({ total: 0 }); -// 查询参数 - 确保初始值为null(符合后端预期) +// 查询参数 - 确保初始值为null(符合后端预期) const queryParams = reactive({ facilityType: null, }); -// 3. 核心方法:查询报表数据 +// 3. 核心方法:查询报表数据 const handleQuery = () => { loading.value = true; - // 打印查询参数,便于调试 + // 打印查询参数,便于调试 console.log("查询参数:", queryParams); getReportData(queryParams) .then((res) => { @@ -214,7 +214,7 @@ const handleQuery = () => { }) .catch((err) => { console.error("查询报表失败:", err); - proxy.$message.error("获取数据失败,请稍后重试"); + proxy.$message.error("获取数据失败,请稍后重试"); reportData.value = []; totalCount.value = 0; }) @@ -314,7 +314,7 @@ const showTotalDetail = async () => { const loadTotalDetailPage = async () => { detailLoading.value = true; try { - // 获取所有数据(不分页)用于计算总数和分页 + // 获取所有数据(不分页)用于计算总数和分页 const allDataRes = await getAllData({ facilityType: queryParams.facilityType }); @@ -382,7 +382,7 @@ const resetQuery = () => { handleQuery(); }; -// 8. 辅助方法:时间格式化 +// 8. 辅助方法:时间格式化 const parseTime = (time) => { if (!time) return "-"; const date = new Date(time); @@ -393,7 +393,7 @@ const parseTime = (time) => { }); }; -// 9. 辅助方法:过期日期标签类型 +// 9. 辅助方法:过期日期标签类型 const getExpiryTagType = (expiryDate) => { if (!expiryDate) return "default"; const today = new Date(); @@ -411,7 +411,7 @@ onMounted(() => { // proxy.$message.warning(`检测到${invalidStatus.length}个状态样式配置错误`); // } - // 初始化查询逻辑(确保字典加载后执行) + // 初始化查询逻辑(确保字典加载后执行) const initQuery = () => { if (isDictLoaded.value) { handleQuery(); @@ -420,7 +420,7 @@ onMounted(() => { const unwatch = watch(isDictLoaded, (loaded) => { if (loaded) { handleQuery(); - unwatch(); // 执行后销毁监听,避免重复调用 + unwatch(); // 执行后销毁监听,避免重复调用 } }); } @@ -430,7 +430,7 @@ onMounted(() => { initQuery(); }); -// 移除原有的watch(isDictLoaded),改用onMounted中的逻辑 +// 移除原有的watch(isDictLoaded),改用onMounted中的逻辑 + + +
+ +
+

南宁市社会医疗机构专用处方笺

+
+ + +
+
+
费别:
+
+ ${insuranceInfo} 对号划✓ +
+
+ +
+
姓名:
+
${data.name || ''} 
+ +
性别:
+
${genderDisplay} 
+ +
年龄:
+
${data.age || ''} 
+
+ +
+
门诊病历�?
+
${data.medicalRecordNo || ''} 
+ +
科别:
+
${data.classInfo || ''}
+
+ +
+
临床诊断:
+
${data.diagnosis || ''} 
+
+ +
+
开具日�?
+
+ ${dateObj.year}�? + ${dateObj.month}�? + ${dateObj.day}�? +
+
+ + + +
+
主诉: ${data.chiefComplaint || '�?}
+
现病�? ${data.presentIllness || '�?}
+
既往�? ${data.pastHistory || '�?}
+ +
+
Rp:${data.medicalAdvice || ''}
+
+ + + +
+
处方详情
+ + + + + + + + + + + + + + ${data.prescriptionDetailsList?.flat().map((item, index) => ` + + + + + + + + + + `).join('') || ''} + +
序号药品名称规格用法用量频次总量
${index + 1}${item.medicineName || ''}${item.specification || ''}${item.usageValue || ''}${item.dosageValue || ''} ${formatUnit(item.splitUnit) || ''}${formatFrequency(item.frequency) || ''}${item.totalQuantity || ''} ${formatUnit(item.packageUnit) || ''}
无处�?/td>
+
+ + + + + + `; + + // 写入打印内容 + printWindow.document.write(printContent); + printWindow.document.close(); + + // 等待内容加载完成后自动打�? + printWindow.onload = function () { + setTimeout(() => { + printWindow.print(); + }, 500); + }; +} + +// 主诉相关数据 +const complaintsOptions = ref([]) +const loadingComplaints = ref(false) + +// 初始化时加载主诉模板 +onMounted(() => { + loadComplaintsOptions() +}) + +// 加载主诉模板 +const loadComplaintsOptions = async () => { + try { + loadingComplaints.value = true + const response = await listHealthcareOsComplaints({status: 0}) + complaintsOptions.value = response.rows.map(item => ({ + value: item.complaintName, + label: item.complaintName, + ...item + })) + } catch (error) { + console.error('加载主诉模板失败:', error) + } finally { + loadingComplaints.value = false + } +} + +// 处理输入框获取焦点事�? +const handleComplaintFocus = () => { + if (!loadingComplaints.value && complaintsOptions.value.length === 0) { + loadComplaintsOptions() + } +} + +// 查询主诉建议 +const queryComplaintSuggestions = async (queryString, cb) => { + try { + // 如果没有查询字符串或为空,返回所有选项 + if (!queryString || queryString.trim() === '') { + cb(complaintsOptions.value); + return; + } + + // 将查询字符串转为小写以便不区分大小写 + const searchTerm = queryString.toLowerCase(); + + // 过滤匹配的选项 + const filteredOptions = complaintsOptions.value.filter(option => { + // 检查选项的label或value是否包含搜索�? + return ( + (option.label && option.label.toLowerCase().includes(searchTerm)) || + (option.value && option.value.toLowerCase().includes(searchTerm)) + ); + }); + + cb(filteredOptions); + } catch (error) { + console.error('查询主诉失败:', error); + cb([]); + } +}; + +// 选择主诉 +const selectComplaint = (item) => { + if (item.isCustom) { + // 自由输入 + form.value.chiefComplaint = item.value + } else { + // 选择模板 + form.value.chiefComplaint = item.label + form.value.presentIllness = item.currentHistory || '' + form.value.pastHistory = item.pastHistory || '' + form.value.diagnosis = item.diagnosis || '' + form.value.medicalAdvice = item.medicalAdvice || '' + } +} +// 清空主诉及相关字�? +const clearComplaint = () => { + form.value.chiefComplaint = '' + form.value.presentIllness = '' + form.value.pastHistory = '' + form.value.diagnosis = '' + form.value.medicalAdvice = '' +} + +// +const timesData = ref('饭后') +const xuanZheData = (val, index) => { + console.log('选中12345'); + console.log(val, index); +} + + +getList() + + + diff --git a/src/views/healthcare/pharmacy/dispensing/index.vue b/src/views/healthcare/pharmacy/dispensing/index.vue index 78110a0..5f3d9c7 100644 --- a/src/views/healthcare/pharmacy/dispensing/index.vue +++ b/src/views/healthcare/pharmacy/dispensing/index.vue @@ -161,16 +161,16 @@ - + - - + + @@ -439,7 +439,7 @@ }, ]"> - {{ form.prescriptionDetailsList[item][scope.$index].unitPrice.toFixed(2) }} + {{ Number(form.prescriptionDetailsList[item][scope.$index].unitPrice || 0).toFixed(2) }} @@ -452,7 +452,7 @@ }, ]"> - {{ form.prescriptionDetailsList[item][scope.$index].unitPrice.toFixed(2) }} + {{ Number(form.prescriptionDetailsList[item][scope.$index].unitPrice || 0).toFixed(2) }} @@ -461,7 +461,14 @@ @@ -481,12 +488,21 @@ - +
- 所有药品总价和: {{ totalPriceSum }} 元 + + 应收金额:{{ form.isInsured === 0 ? patientPay : ceilPrice(totalPriceSum) }} 元 + + + 处方总金额:{{ ceilPrice(totalPriceSum) }} 元 + + + 预计报销:{{ Number(currentReimbursement).toFixed(2) }} 元 +
+
@@ -498,6 +514,11 @@ 驳回 + 更正 + 保存更正 + 取消 取 消
@@ -516,7 +537,18 @@ diff --git a/src/views/inspection/manage/index.vue b/src/views/inspection/manage/index.vue index d8e926c..211035d 100644 --- a/src/views/inspection/manage/index.vue +++ b/src/views/inspection/manage/index.vue @@ -36,7 +36,7 @@ >删除 --> - 批量生产二维码 + 批量生成二维码 + + + diff --git a/src/views/register.vue b/src/views/register.vue index 7bb3812..dcae782 100644 --- a/src/views/register.vue +++ b/src/views/register.vue @@ -70,7 +70,7 @@
diff --git a/vite.config.js b/vite.config.js index 3441c9e..ec3666d 100644 --- a/vite.config.js +++ b/vite.config.js @@ -5,11 +5,13 @@ import createVitePlugins from './vite/plugins' // https://vitejs.dev/config/ export default defineConfig(({ mode, command }) => { const env = loadEnv(mode, process.cwd()) - const { VITE_APP_ENV } = env + const { VITE_APP_ENV, VITE_APP_CAS_ENABLE } = env return { // 部署生产环境和开发环境下的URL. - base: VITE_APP_ENV === 'production' ? '/' : '/', + // 根据 .env 中的 CAS 开关动态设置 base 路径 + // 注意:不要从 src/settings 引入,因为 vite 配置运行在 Node 环境,无法使用 import.meta.env + base: VITE_APP_ENV === 'production' ? ((VITE_APP_CAS_ENABLE === 'true') ? '/cas/' : '/srs/') : '/', plugins: createVitePlugins(env, command === 'build'), resolve: { // https://cn.vitejs.dev/config/#resolve-alias @@ -26,8 +28,8 @@ export default defineConfig(({ mode, command }) => { proxy: { // https://cn.vitejs.dev/config/#server-proxy '/dev-api': { - target: 'http://localhost:8080', // 测试 - // target: 'http://172.16.129.101:8080', // 正式环境 + // target: 'http://localhost:8080', // 测试 + target: 'http://172.16.129.101:8080', // 正式环境 changeOrigin: true, rewrite: (p) => p.replace(/^\/dev-api/, '') }, diff --git a/vite.config.js.timestamp-1760689999596-49762782f98ed.mjs b/vite.config.js.timestamp-1760689999596-49762782f98ed.mjs new file mode 100644 index 0000000..b6ee6a1 --- /dev/null +++ b/vite.config.js.timestamp-1760689999596-49762782f98ed.mjs @@ -0,0 +1,202 @@ +// vite.config.js +import path2 from "path"; +import { defineConfig, loadEnv } from "file:///D:/code/pasd_V1.0/pasd_pc/node_modules/vite/dist/node/index.js"; + +// src/settings.js +var settings_default = { + /** + * 网页标题 + */ + title: import.meta.env?.VITE_APP_TITLE || "\u5E73\u5B89\u6C34\u7535", + /** + * 侧边栏主题 深色主题theme-dark,浅色主题theme-light + */ + sideTheme: "theme-dark", + /** + * 是否系统布局配置 + */ + showSettings: true, + /** + * 是否显示顶部导航 + */ + topNav: false, + /** + * 是否显示 tagsView + */ + tagsView: true, + /** + * 是否固定头部 + */ + fixedHeader: false, + /** + * 是否显示logo + */ + sidebarLogo: true, + /** + * 是否显示动态标题 + */ + dynamicTitle: false, + /** + * @type {string | array} 'production' | ['production', 'development'] + * @description Need show err logs component. + * The default is only used in the production env + * If you want to also use it in dev, you can pass ['production', 'development'] + */ + errorLog: "production", + /** + * CAS登录配置 + */ + // 是否启用CAS登录 (true: CAS登录模式, false: 传统登录模式) + casEnable: true, + // CAS服务器地址 + casServerUrl: "https://rsso.gxsdxy.cn", + // 部署路径配置 (CAS模式: /cas/, 传统模式: /srs/) + deployPath: function() { + return this.casEnable ? "/cas/" : "/srs/"; + } +}; + +// vite/plugins/index.js +import vue from "file:///D:/code/pasd_V1.0/pasd_pc/node_modules/@vitejs/plugin-vue/dist/index.mjs"; + +// vite/plugins/auto-import.js +import autoImport from "file:///D:/code/pasd_V1.0/pasd_pc/node_modules/unplugin-auto-import/dist/vite.js"; +function createAutoImport() { + return autoImport({ + imports: [ + "vue", + "vue-router", + "pinia" + ], + dts: false + }); +} + +// vite/plugins/svg-icon.js +import { createSvgIconsPlugin } from "file:///D:/code/pasd_V1.0/pasd_pc/node_modules/vite-plugin-svg-icons/dist/index.mjs"; +import path from "path"; +function createSvgIcon(isBuild) { + return createSvgIconsPlugin({ + iconDirs: [path.resolve(process.cwd(), "src/assets/icons/svg")], + symbolId: "icon-[dir]-[name]", + svgoOptions: isBuild + }); +} + +// vite/plugins/compression.js +import compression from "file:///D:/code/pasd_V1.0/pasd_pc/node_modules/vite-plugin-compression/dist/index.mjs"; +function createCompression(env) { + const { VITE_BUILD_COMPRESS } = env; + const plugin = []; + if (VITE_BUILD_COMPRESS) { + const compressList = VITE_BUILD_COMPRESS.split(","); + if (compressList.includes("gzip")) { + plugin.push( + compression({ + ext: ".gz", + deleteOriginFile: false + }) + ); + } + if (compressList.includes("brotli")) { + plugin.push( + compression({ + ext: ".br", + algorithm: "brotliCompress", + deleteOriginFile: false + }) + ); + } + } + return plugin; +} + +// vite/plugins/setup-extend.js +import setupExtend from "file:///D:/code/pasd_V1.0/pasd_pc/node_modules/unplugin-vue-setup-extend-plus/dist/vite.js"; +function createSetupExtend() { + return setupExtend({}); +} + +// vite/plugins/index.js +function createVitePlugins(viteEnv, isBuild = false) { + const vitePlugins = [vue()]; + vitePlugins.push(createAutoImport()); + vitePlugins.push(createSetupExtend()); + vitePlugins.push(createSvgIcon(isBuild)); + isBuild && vitePlugins.push(...createCompression(viteEnv)); + return vitePlugins; +} + +// vite.config.js +var __vite_injected_original_dirname = "D:\\code\\pasd_V1.0\\pasd_pc"; +var vite_config_default = defineConfig(({ mode, command }) => { + const env = loadEnv(mode, process.cwd()); + const { VITE_APP_ENV } = env; + return { + // 部署生产环境和开发环境下的URL. + // 根据CAS配置动态设置base路径 + base: env.VITE_APP_ENV === "production" ? settings_default.deployPath() : "/", + plugins: createVitePlugins(env, command === "build"), + resolve: { + // https://cn.vitejs.dev/config/#resolve-alias + alias: { + "~": path2.resolve(__vite_injected_original_dirname, "./"), + "@": path2.resolve(__vite_injected_original_dirname, "./src") + }, + // https://cn.vitejs.dev/config/#resolve-extensions + extensions: [".mjs", ".js", ".ts", ".jsx", ".tsx", ".json", ".vue"] + }, + server: { + host: true, + open: true, + proxy: { + // https://cn.vitejs.dev/config/#server-proxy + "/dev-api": { + target: "http://localhost:8080", + // 测试 + // target: 'http://172.16.129.101:8080', // 正式环境 + changeOrigin: true, + rewrite: (p) => p.replace(/^\/dev-api/, "") + }, + // 添加对第三方 API 的代理配置 + "/api/v1/jssdk/upload": { + target: "https://px.effirst.com", + changeOrigin: true, + rewrite: (p) => p.replace(/^\/api\/v1\/jssdk\/upload/, "/api/v1/jssdk/upload") + } + } + }, + // fix:error:stdin>:7356:1: warning: "@charset" must be the first rule in the file + css: { + postcss: { + plugins: [ + { + postcssPlugin: "internal:charset-removal", + AtRule: { + charset: (atRule) => { + if (atRule.name === "charset") { + atRule.remove(); + } + } + } + } + ] + } + }, + build: { + target: "es2015", + // 指定编译目标 + minify: "terser", + terserOptions: { + compress: { + drop_console: true, + drop_debugger: true + } + } + } + }; +}); +export { + vite_config_default as default +}; +//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcuanMiLCAic3JjL3NldHRpbmdzLmpzIiwgInZpdGUvcGx1Z2lucy9pbmRleC5qcyIsICJ2aXRlL3BsdWdpbnMvYXV0by1pbXBvcnQuanMiLCAidml0ZS9wbHVnaW5zL3N2Zy1pY29uLmpzIiwgInZpdGUvcGx1Z2lucy9jb21wcmVzc2lvbi5qcyIsICJ2aXRlL3BsdWdpbnMvc2V0dXAtZXh0ZW5kLmpzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSA9IFwiRDpcXFxcY29kZVxcXFxwYXNkX1YxLjBcXFxccGFzZF9wY1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiRDpcXFxcY29kZVxcXFxwYXNkX1YxLjBcXFxccGFzZF9wY1xcXFx2aXRlLmNvbmZpZy5qc1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9pbXBvcnRfbWV0YV91cmwgPSBcImZpbGU6Ly8vRDovY29kZS9wYXNkX1YxLjAvcGFzZF9wYy92aXRlLmNvbmZpZy5qc1wiO2ltcG9ydCBwYXRoIGZyb20gJ3BhdGgnXHJcbmltcG9ydCB7IGRlZmluZUNvbmZpZywgbG9hZEVudiB9IGZyb20gJ3ZpdGUnXHJcbmltcG9ydCBzZXR0aW5ncyBmcm9tICcuL3NyYy9zZXR0aW5ncydcclxuaW1wb3J0IGNyZWF0ZVZpdGVQbHVnaW5zIGZyb20gJy4vdml0ZS9wbHVnaW5zJ1xyXG5cclxuLy8gaHR0cHM6Ly92aXRlanMuZGV2L2NvbmZpZy9cclxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29uZmlnKCh7IG1vZGUsIGNvbW1hbmQgfSkgPT4ge1xyXG4gIGNvbnN0IGVudiA9IGxvYWRFbnYobW9kZSwgcHJvY2Vzcy5jd2QoKSlcclxuICBjb25zdCB7IFZJVEVfQVBQX0VOViB9ID0gZW52XHJcblxyXG4gIHJldHVybiB7XHJcbiAgICAvLyBcdTkwRThcdTdGNzJcdTc1MUZcdTRFQTdcdTczQUZcdTU4ODNcdTU0OENcdTVGMDBcdTUzRDFcdTczQUZcdTU4ODNcdTRFMEJcdTc2ODRVUkwuXHJcbiAgICAvLyBcdTY4MzlcdTYzNkVDQVNcdTkxNERcdTdGNkVcdTUyQThcdTYwMDFcdThCQkVcdTdGNkViYXNlXHU4REVGXHU1Rjg0XHJcbiAgICBiYXNlOiBlbnYuVklURV9BUFBfRU5WID09PSAncHJvZHVjdGlvbicgPyBzZXR0aW5ncy5kZXBsb3lQYXRoKCkgOiAnLycsXHJcbiAgICBwbHVnaW5zOiBjcmVhdGVWaXRlUGx1Z2lucyhlbnYsIGNvbW1hbmQgPT09ICdidWlsZCcpLFxyXG4gICAgcmVzb2x2ZToge1xyXG4gICAgICAvLyBodHRwczovL2NuLnZpdGVqcy5kZXYvY29uZmlnLyNyZXNvbHZlLWFsaWFzXHJcbiAgICAgIGFsaWFzOiB7XHJcbiAgICAgICAgJ34nOiBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAnLi8nKSxcclxuICAgICAgICAnQCc6IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsICcuL3NyYycpXHJcbiAgICAgIH0sXHJcbiAgICAgIC8vIGh0dHBzOi8vY24udml0ZWpzLmRldi9jb25maWcvI3Jlc29sdmUtZXh0ZW5zaW9uc1xyXG4gICAgICBleHRlbnNpb25zOiBbJy5tanMnLCAnLmpzJywgJy50cycsICcuanN4JywgJy50c3gnLCAnLmpzb24nLCAnLnZ1ZSddXHJcbiAgICB9LFxyXG4gICAgc2VydmVyOiB7XHJcbiAgICAgIGhvc3Q6IHRydWUsXHJcbiAgICAgIG9wZW46IHRydWUsXHJcbiAgICAgIHByb3h5OiB7XHJcbiAgICAgICAgLy8gaHR0cHM6Ly9jbi52aXRlanMuZGV2L2NvbmZpZy8jc2VydmVyLXByb3h5XHJcbiAgICAgICAgJy9kZXYtYXBpJzoge1xyXG4gICAgICAgICAgICB0YXJnZXQ6ICdodHRwOi8vbG9jYWxob3N0OjgwODAnLCAvLyBcdTZENEJcdThCRDVcclxuICAgICAgICAgIC8vIHRhcmdldDogJ2h0dHA6Ly8xNzIuMTYuMTI5LjEwMTo4MDgwJywgLy8gXHU2QjYzXHU1RjBGXHU3M0FGXHU1ODgzXHJcbiAgICAgICAgICBjaGFuZ2VPcmlnaW46IHRydWUsXHJcbiAgICAgICAgICByZXdyaXRlOiAocCkgPT4gcC5yZXBsYWNlKC9eXFwvZGV2LWFwaS8sICcnKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLy8gXHU2REZCXHU1MkEwXHU1QkY5XHU3QjJDXHU0RTA5XHU2NUI5IEFQSSBcdTc2ODRcdTRFRTNcdTc0MDZcdTkxNERcdTdGNkVcclxuICAgICAgICAnL2FwaS92MS9qc3Nkay91cGxvYWQnOiB7XHJcbiAgICAgICAgICB0YXJnZXQ6ICdodHRwczovL3B4LmVmZmlyc3QuY29tJyxcclxuICAgICAgICAgIGNoYW5nZU9yaWdpbjogdHJ1ZSxcclxuICAgICAgICAgIHJld3JpdGU6IChwKSA9PiBwLnJlcGxhY2UoL15cXC9hcGlcXC92MVxcL2pzc2RrXFwvdXBsb2FkLywgJy9hcGkvdjEvanNzZGsvdXBsb2FkJylcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICAvLyBmaXg6ZXJyb3I6c3RkaW4+OjczNTY6MTogd2FybmluZzogXCJAY2hhcnNldFwiIG11c3QgYmUgdGhlIGZpcnN0IHJ1bGUgaW4gdGhlIGZpbGVcclxuICAgIGNzczoge1xyXG4gICAgICBwb3N0Y3NzOiB7XHJcbiAgICAgICAgcGx1Z2luczogW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBwb3N0Y3NzUGx1Z2luOiAnaW50ZXJuYWw6Y2hhcnNldC1yZW1vdmFsJyxcclxuICAgICAgICAgICAgQXRSdWxlOiB7XHJcbiAgICAgICAgICAgICAgY2hhcnNldDogKGF0UnVsZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGF0UnVsZS5uYW1lID09PSAnY2hhcnNldCcpIHtcclxuICAgICAgICAgICAgICAgICAgYXRSdWxlLnJlbW92ZSgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIF1cclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIGJ1aWxkOiB7XHJcbiAgICAgIHRhcmdldDogJ2VzMjAxNScsIC8vIFx1NjMwN1x1NUI5QVx1N0YxNlx1OEJEMVx1NzZFRVx1NjgwN1xyXG4gICAgICBtaW5pZnk6ICd0ZXJzZXInLFxyXG4gICAgICB0ZXJzZXJPcHRpb25zOiB7XHJcbiAgICAgICAgY29tcHJlc3M6IHtcclxuICAgICAgICAgIGRyb3BfY29uc29sZTogdHJ1ZSxcclxuICAgICAgICAgIGRyb3BfZGVidWdnZXI6IHRydWUsXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59KSIsICJjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSA9IFwiRDpcXFxcY29kZVxcXFxwYXNkX1YxLjBcXFxccGFzZF9wY1xcXFxzcmNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZmlsZW5hbWUgPSBcIkQ6XFxcXGNvZGVcXFxccGFzZF9WMS4wXFxcXHBhc2RfcGNcXFxcc3JjXFxcXHNldHRpbmdzLmpzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9EOi9jb2RlL3Bhc2RfVjEuMC9wYXNkX3BjL3NyYy9zZXR0aW5ncy5qc1wiO2V4cG9ydCBkZWZhdWx0IHtcclxuICAvKipcclxuICAgKiBcdTdGNTFcdTk4NzVcdTY4MDdcdTk4OThcclxuICAgKi9cclxuICB0aXRsZTogaW1wb3J0Lm1ldGEuZW52Py5WSVRFX0FQUF9USVRMRSB8fCAnXHU1RTczXHU1Qjg5XHU2QzM0XHU3NTM1JyxcclxuICAvKipcclxuICAgKiBcdTRGQTdcdThGQjlcdTY4MEZcdTRFM0JcdTk4OTggXHU2REYxXHU4MjcyXHU0RTNCXHU5ODk4dGhlbWUtZGFyayxcdTZENDVcdTgyNzJcdTRFM0JcdTk4OTh0aGVtZS1saWdodFxyXG4gICAqL1xyXG4gIHNpZGVUaGVtZTogJ3RoZW1lLWRhcmsnLFxyXG4gIC8qKlxyXG4gICAqIFx1NjYyRlx1NTQyNlx1N0NGQlx1N0VERlx1NUUwM1x1NUM0MFx1OTE0RFx1N0Y2RVxyXG4gICAqL1xyXG4gIHNob3dTZXR0aW5nczogdHJ1ZSxcclxuXHJcbiAgLyoqXHJcbiAgICogXHU2NjJGXHU1NDI2XHU2NjNFXHU3OTNBXHU5ODc2XHU5MEU4XHU1QkZDXHU4MjJBXHJcbiAgICovXHJcbiAgdG9wTmF2OiBmYWxzZSxcclxuXHJcbiAgLyoqXHJcbiAgICogXHU2NjJGXHU1NDI2XHU2NjNFXHU3OTNBIHRhZ3NWaWV3XHJcbiAgICovXHJcbiAgdGFnc1ZpZXc6IHRydWUsXHJcblxyXG4gIC8qKlxyXG4gICAqIFx1NjYyRlx1NTQyNlx1NTZGQVx1NUI5QVx1NTkzNFx1OTBFOFxyXG4gICAqL1xyXG4gIGZpeGVkSGVhZGVyOiBmYWxzZSxcclxuXHJcbiAgLyoqXHJcbiAgICogXHU2NjJGXHU1NDI2XHU2NjNFXHU3OTNBbG9nb1xyXG4gICAqL1xyXG4gIHNpZGViYXJMb2dvOiB0cnVlLFxyXG5cclxuICAvKipcclxuICAgKiBcdTY2MkZcdTU0MjZcdTY2M0VcdTc5M0FcdTUyQThcdTYwMDFcdTY4MDdcdTk4OThcclxuICAgKi9cclxuICBkeW5hbWljVGl0bGU6IGZhbHNlLFxyXG5cclxuICAvKipcclxuICAgKiBAdHlwZSB7c3RyaW5nIHwgYXJyYXl9ICdwcm9kdWN0aW9uJyB8IFsncHJvZHVjdGlvbicsICdkZXZlbG9wbWVudCddXHJcbiAgICogQGRlc2NyaXB0aW9uIE5lZWQgc2hvdyBlcnIgbG9ncyBjb21wb25lbnQuXHJcbiAgICogVGhlIGRlZmF1bHQgaXMgb25seSB1c2VkIGluIHRoZSBwcm9kdWN0aW9uIGVudlxyXG4gICAqIElmIHlvdSB3YW50IHRvIGFsc28gdXNlIGl0IGluIGRldiwgeW91IGNhbiBwYXNzIFsncHJvZHVjdGlvbicsICdkZXZlbG9wbWVudCddXHJcbiAgICovXHJcbiAgZXJyb3JMb2c6ICdwcm9kdWN0aW9uJyxcclxuXHJcbiAgLyoqXHJcbiAgICogQ0FTXHU3NjdCXHU1RjU1XHU5MTREXHU3RjZFXHJcbiAgICovXHJcbiAgLy8gXHU2NjJGXHU1NDI2XHU1NDJGXHU3NTI4Q0FTXHU3NjdCXHU1RjU1ICh0cnVlOiBDQVNcdTc2N0JcdTVGNTVcdTZBMjFcdTVGMEYsIGZhbHNlOiBcdTRGMjBcdTdFREZcdTc2N0JcdTVGNTVcdTZBMjFcdTVGMEYpXHJcbiAgY2FzRW5hYmxlOiB0cnVlLFxyXG4gIFxyXG4gIC8vIENBU1x1NjcwRFx1NTJBMVx1NTY2OFx1NTczMFx1NTc0MFxyXG4gIGNhc1NlcnZlclVybDogJ2h0dHBzOi8vcnNzby5neHNkeHkuY24nLFxyXG4gIFxyXG4gIC8vIFx1OTBFOFx1N0Y3Mlx1OERFRlx1NUY4NFx1OTE0RFx1N0Y2RSAoQ0FTXHU2QTIxXHU1RjBGOiAvY2FzLywgXHU0RjIwXHU3RURGXHU2QTIxXHU1RjBGOiAvc3JzLylcclxuICBkZXBsb3lQYXRoOiBmdW5jdGlvbigpIHtcclxuICAgIHJldHVybiB0aGlzLmNhc0VuYWJsZSA/ICcvY2FzLycgOiAnL3Nycy8nO1xyXG4gIH1cclxufVxyXG4iLCAiY29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2Rpcm5hbWUgPSBcIkQ6XFxcXGNvZGVcXFxccGFzZF9WMS4wXFxcXHBhc2RfcGNcXFxcdml0ZVxcXFxwbHVnaW5zXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCJEOlxcXFxjb2RlXFxcXHBhc2RfVjEuMFxcXFxwYXNkX3BjXFxcXHZpdGVcXFxccGx1Z2luc1xcXFxpbmRleC5qc1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9pbXBvcnRfbWV0YV91cmwgPSBcImZpbGU6Ly8vRDovY29kZS9wYXNkX1YxLjAvcGFzZF9wYy92aXRlL3BsdWdpbnMvaW5kZXguanNcIjtpbXBvcnQgdnVlIGZyb20gJ0B2aXRlanMvcGx1Z2luLXZ1ZSdcclxuXHJcbmltcG9ydCBjcmVhdGVBdXRvSW1wb3J0IGZyb20gJy4vYXV0by1pbXBvcnQnXHJcbmltcG9ydCBjcmVhdGVTdmdJY29uIGZyb20gJy4vc3ZnLWljb24nXHJcbmltcG9ydCBjcmVhdGVDb21wcmVzc2lvbiBmcm9tICcuL2NvbXByZXNzaW9uJ1xyXG5pbXBvcnQgY3JlYXRlU2V0dXBFeHRlbmQgZnJvbSAnLi9zZXR1cC1leHRlbmQnXHJcblxyXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjcmVhdGVWaXRlUGx1Z2lucyh2aXRlRW52LCBpc0J1aWxkID0gZmFsc2UpIHtcclxuICAgIGNvbnN0IHZpdGVQbHVnaW5zID0gW3Z1ZSgpXVxyXG4gICAgdml0ZVBsdWdpbnMucHVzaChjcmVhdGVBdXRvSW1wb3J0KCkpXHJcblx0dml0ZVBsdWdpbnMucHVzaChjcmVhdGVTZXR1cEV4dGVuZCgpKVxyXG4gICAgdml0ZVBsdWdpbnMucHVzaChjcmVhdGVTdmdJY29uKGlzQnVpbGQpKVxyXG5cdGlzQnVpbGQgJiYgdml0ZVBsdWdpbnMucHVzaCguLi5jcmVhdGVDb21wcmVzc2lvbih2aXRlRW52KSlcclxuICAgIHJldHVybiB2aXRlUGx1Z2luc1xyXG59XHJcbiIsICJjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSA9IFwiRDpcXFxcY29kZVxcXFxwYXNkX1YxLjBcXFxccGFzZF9wY1xcXFx2aXRlXFxcXHBsdWdpbnNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZmlsZW5hbWUgPSBcIkQ6XFxcXGNvZGVcXFxccGFzZF9WMS4wXFxcXHBhc2RfcGNcXFxcdml0ZVxcXFxwbHVnaW5zXFxcXGF1dG8taW1wb3J0LmpzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9EOi9jb2RlL3Bhc2RfVjEuMC9wYXNkX3BjL3ZpdGUvcGx1Z2lucy9hdXRvLWltcG9ydC5qc1wiO2ltcG9ydCBhdXRvSW1wb3J0IGZyb20gJ3VucGx1Z2luLWF1dG8taW1wb3J0L3ZpdGUnXHJcblxyXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjcmVhdGVBdXRvSW1wb3J0KCkge1xyXG4gICAgcmV0dXJuIGF1dG9JbXBvcnQoe1xyXG4gICAgICAgIGltcG9ydHM6IFtcclxuICAgICAgICAgICAgJ3Z1ZScsXHJcbiAgICAgICAgICAgICd2dWUtcm91dGVyJyxcclxuICAgICAgICAgICAgJ3BpbmlhJ1xyXG4gICAgICAgIF0sXHJcbiAgICAgICAgZHRzOiBmYWxzZVxyXG4gICAgfSlcclxufVxyXG4iLCAiY29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2Rpcm5hbWUgPSBcIkQ6XFxcXGNvZGVcXFxccGFzZF9WMS4wXFxcXHBhc2RfcGNcXFxcdml0ZVxcXFxwbHVnaW5zXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCJEOlxcXFxjb2RlXFxcXHBhc2RfVjEuMFxcXFxwYXNkX3BjXFxcXHZpdGVcXFxccGx1Z2luc1xcXFxzdmctaWNvbi5qc1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9pbXBvcnRfbWV0YV91cmwgPSBcImZpbGU6Ly8vRDovY29kZS9wYXNkX1YxLjAvcGFzZF9wYy92aXRlL3BsdWdpbnMvc3ZnLWljb24uanNcIjtpbXBvcnQgeyBjcmVhdGVTdmdJY29uc1BsdWdpbiB9IGZyb20gJ3ZpdGUtcGx1Z2luLXN2Zy1pY29ucydcclxuaW1wb3J0IHBhdGggZnJvbSAncGF0aCdcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZVN2Z0ljb24oaXNCdWlsZCkge1xyXG4gICAgcmV0dXJuIGNyZWF0ZVN2Z0ljb25zUGx1Z2luKHtcclxuXHRcdGljb25EaXJzOiBbcGF0aC5yZXNvbHZlKHByb2Nlc3MuY3dkKCksICdzcmMvYXNzZXRzL2ljb25zL3N2ZycpXSxcclxuICAgICAgICBzeW1ib2xJZDogJ2ljb24tW2Rpcl0tW25hbWVdJyxcclxuICAgICAgICBzdmdvT3B0aW9uczogaXNCdWlsZFxyXG4gICAgfSlcclxufVxyXG4iLCAiY29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2Rpcm5hbWUgPSBcIkQ6XFxcXGNvZGVcXFxccGFzZF9WMS4wXFxcXHBhc2RfcGNcXFxcdml0ZVxcXFxwbHVnaW5zXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCJEOlxcXFxjb2RlXFxcXHBhc2RfVjEuMFxcXFxwYXNkX3BjXFxcXHZpdGVcXFxccGx1Z2luc1xcXFxjb21wcmVzc2lvbi5qc1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9pbXBvcnRfbWV0YV91cmwgPSBcImZpbGU6Ly8vRDovY29kZS9wYXNkX1YxLjAvcGFzZF9wYy92aXRlL3BsdWdpbnMvY29tcHJlc3Npb24uanNcIjtpbXBvcnQgY29tcHJlc3Npb24gZnJvbSAndml0ZS1wbHVnaW4tY29tcHJlc3Npb24nXHJcblxyXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjcmVhdGVDb21wcmVzc2lvbihlbnYpIHtcclxuICAgIGNvbnN0IHsgVklURV9CVUlMRF9DT01QUkVTUyB9ID0gZW52XHJcbiAgICBjb25zdCBwbHVnaW4gPSBbXVxyXG4gICAgaWYgKFZJVEVfQlVJTERfQ09NUFJFU1MpIHtcclxuICAgICAgICBjb25zdCBjb21wcmVzc0xpc3QgPSBWSVRFX0JVSUxEX0NPTVBSRVNTLnNwbGl0KCcsJylcclxuICAgICAgICBpZiAoY29tcHJlc3NMaXN0LmluY2x1ZGVzKCdnemlwJykpIHtcclxuICAgICAgICAgICAgLy8gaHR0cDovL2RvYy5ydW95aS52aXAvcnVveWktdnVlL290aGVyL2ZhcS5odG1sI1x1NEY3Rlx1NzUyOGd6aXBcdTg5RTNcdTUzOEJcdTdGMjlcdTk3NTlcdTYwMDFcdTY1ODdcdTRFRjZcclxuICAgICAgICAgICAgcGx1Z2luLnB1c2goXHJcbiAgICAgICAgICAgICAgICBjb21wcmVzc2lvbih7XHJcbiAgICAgICAgICAgICAgICAgICAgZXh0OiAnLmd6JyxcclxuICAgICAgICAgICAgICAgICAgICBkZWxldGVPcmlnaW5GaWxlOiBmYWxzZVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoY29tcHJlc3NMaXN0LmluY2x1ZGVzKCdicm90bGknKSkge1xyXG4gICAgICAgICAgICBwbHVnaW4ucHVzaChcclxuICAgICAgICAgICAgICAgIGNvbXByZXNzaW9uKHtcclxuICAgICAgICAgICAgICAgICAgICBleHQ6ICcuYnInLFxyXG4gICAgICAgICAgICAgICAgICAgIGFsZ29yaXRobTogJ2Jyb3RsaUNvbXByZXNzJyxcclxuICAgICAgICAgICAgICAgICAgICBkZWxldGVPcmlnaW5GaWxlOiBmYWxzZVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBwbHVnaW5cclxufVxyXG4iLCAiY29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2Rpcm5hbWUgPSBcIkQ6XFxcXGNvZGVcXFxccGFzZF9WMS4wXFxcXHBhc2RfcGNcXFxcdml0ZVxcXFxwbHVnaW5zXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCJEOlxcXFxjb2RlXFxcXHBhc2RfVjEuMFxcXFxwYXNkX3BjXFxcXHZpdGVcXFxccGx1Z2luc1xcXFxzZXR1cC1leHRlbmQuanNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL0Q6L2NvZGUvcGFzZF9WMS4wL3Bhc2RfcGMvdml0ZS9wbHVnaW5zL3NldHVwLWV4dGVuZC5qc1wiO2ltcG9ydCBzZXR1cEV4dGVuZCBmcm9tICd1bnBsdWdpbi12dWUtc2V0dXAtZXh0ZW5kLXBsdXMvdml0ZSdcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZVNldHVwRXh0ZW5kKCkge1xyXG4gICAgcmV0dXJuIHNldHVwRXh0ZW5kKHt9KVxyXG59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 diff --git a/vite.config.js.timestamp-1761642518249-ed073713ec89a.mjs b/vite.config.js.timestamp-1761642518249-ed073713ec89a.mjs new file mode 100644 index 0000000..3967132 --- /dev/null +++ b/vite.config.js.timestamp-1761642518249-ed073713ec89a.mjs @@ -0,0 +1,204 @@ +// vite.config.js +import path2 from "path"; +import { defineConfig, loadEnv } from "file:///D:/code/pasd_V1.0/pasd_pc/node_modules/vite/dist/node/index.js"; + +// src/settings.js +var settings_default = { + /** + * 网页标题 + */ + title: import.meta.env?.VITE_APP_TITLE || "\u5E73\u5B89\u6C34\u7535", + /** + * 侧边栏主题 深色主题theme-dark,浅色主题theme-light + */ + sideTheme: "theme-dark", + /** + * 是否系统布局配置 + */ + showSettings: true, + /** + * 是否显示顶部导航 + */ + topNav: false, + /** + * 是否显示 tagsView + */ + tagsView: true, + /** + * 是否固定头部 + */ + fixedHeader: false, + /** + * 是否显示logo + */ + sidebarLogo: true, + /** + * 是否显示动态标题 + */ + dynamicTitle: false, + /** + * @type {string | array} 'production' | ['production', 'development'] + * @description Need show err logs component. + * The default is only used in the production env + * If you want to also use it in dev, you can pass ['production', 'development'] + */ + errorLog: "production", + /** + * CAS登录配置 + */ + // 是否启用CAS登录 (true: CAS登录模式, false: 传统登录模式) + casEnable: (import.meta.env?.VITE_APP_CAS_ENABLE || "false") === "true", + // CAS服务器地址 + casServerUrl: import.meta.env?.VITE_APP_CAS_SERVER_URL || "https://rsso.gxsdxy.cn", + // CAS票据验证地址(CAS3默认 p3) + casValidateUrl: import.meta.env?.VITE_APP_CAS_VALIDATE_URL || "https://rsso.gxsdxy.cn/p3/serviceValidate", + // 部署路径配置 (CAS模式: /cas/, 传统模式: /srs/) + deployPath: function() { + return this.casEnable ? "/cas/" : "/srs/"; + } +}; + +// vite/plugins/index.js +import vue from "file:///D:/code/pasd_V1.0/pasd_pc/node_modules/@vitejs/plugin-vue/dist/index.mjs"; + +// vite/plugins/auto-import.js +import autoImport from "file:///D:/code/pasd_V1.0/pasd_pc/node_modules/unplugin-auto-import/dist/vite.js"; +function createAutoImport() { + return autoImport({ + imports: [ + "vue", + "vue-router", + "pinia" + ], + dts: false + }); +} + +// vite/plugins/svg-icon.js +import { createSvgIconsPlugin } from "file:///D:/code/pasd_V1.0/pasd_pc/node_modules/vite-plugin-svg-icons/dist/index.mjs"; +import path from "path"; +function createSvgIcon(isBuild) { + return createSvgIconsPlugin({ + iconDirs: [path.resolve(process.cwd(), "src/assets/icons/svg")], + symbolId: "icon-[dir]-[name]", + svgoOptions: isBuild + }); +} + +// vite/plugins/compression.js +import compression from "file:///D:/code/pasd_V1.0/pasd_pc/node_modules/vite-plugin-compression/dist/index.mjs"; +function createCompression(env) { + const { VITE_BUILD_COMPRESS } = env; + const plugin = []; + if (VITE_BUILD_COMPRESS) { + const compressList = VITE_BUILD_COMPRESS.split(","); + if (compressList.includes("gzip")) { + plugin.push( + compression({ + ext: ".gz", + deleteOriginFile: false + }) + ); + } + if (compressList.includes("brotli")) { + plugin.push( + compression({ + ext: ".br", + algorithm: "brotliCompress", + deleteOriginFile: false + }) + ); + } + } + return plugin; +} + +// vite/plugins/setup-extend.js +import setupExtend from "file:///D:/code/pasd_V1.0/pasd_pc/node_modules/unplugin-vue-setup-extend-plus/dist/vite.js"; +function createSetupExtend() { + return setupExtend({}); +} + +// vite/plugins/index.js +function createVitePlugins(viteEnv, isBuild = false) { + const vitePlugins = [vue()]; + vitePlugins.push(createAutoImport()); + vitePlugins.push(createSetupExtend()); + vitePlugins.push(createSvgIcon(isBuild)); + isBuild && vitePlugins.push(...createCompression(viteEnv)); + return vitePlugins; +} + +// vite.config.js +var __vite_injected_original_dirname = "D:\\code\\pasd_V1.0\\pasd_pc"; +var vite_config_default = defineConfig(({ mode, command }) => { + const env = loadEnv(mode, process.cwd()); + const { VITE_APP_ENV } = env; + return { + // 部署生产环境和开发环境下的URL. + // 根据CAS配置动态设置base路径 + base: env.VITE_APP_ENV === "production" ? settings_default.deployPath() : "/", + plugins: createVitePlugins(env, command === "build"), + resolve: { + // https://cn.vitejs.dev/config/#resolve-alias + alias: { + "~": path2.resolve(__vite_injected_original_dirname, "./"), + "@": path2.resolve(__vite_injected_original_dirname, "./src") + }, + // https://cn.vitejs.dev/config/#resolve-extensions + extensions: [".mjs", ".js", ".ts", ".jsx", ".tsx", ".json", ".vue"] + }, + server: { + host: true, + open: true, + proxy: { + // https://cn.vitejs.dev/config/#server-proxy + "/dev-api": { + // target: 'http://localhost:8080', // 测试 + target: "http://172.16.129.101:8080", + // 正式环境 + changeOrigin: true, + rewrite: (p) => p.replace(/^\/dev-api/, "") + }, + // 添加对第三方 API 的代理配置 + "/api/v1/jssdk/upload": { + target: "https://px.effirst.com", + changeOrigin: true, + rewrite: (p) => p.replace(/^\/api\/v1\/jssdk\/upload/, "/api/v1/jssdk/upload") + } + } + }, + // fix:error:stdin>:7356:1: warning: "@charset" must be the first rule in the file + css: { + postcss: { + plugins: [ + { + postcssPlugin: "internal:charset-removal", + AtRule: { + charset: (atRule) => { + if (atRule.name === "charset") { + atRule.remove(); + } + } + } + } + ] + } + }, + build: { + target: "es2015", + // 指定编译目标 + minify: "terser", + terserOptions: { + compress: { + drop_console: true, + drop_debugger: true + } + } + } + }; +}); +export { + vite_config_default as default +}; +//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcuanMiLCAic3JjL3NldHRpbmdzLmpzIiwgInZpdGUvcGx1Z2lucy9pbmRleC5qcyIsICJ2aXRlL3BsdWdpbnMvYXV0by1pbXBvcnQuanMiLCAidml0ZS9wbHVnaW5zL3N2Zy1pY29uLmpzIiwgInZpdGUvcGx1Z2lucy9jb21wcmVzc2lvbi5qcyIsICJ2aXRlL3BsdWdpbnMvc2V0dXAtZXh0ZW5kLmpzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSA9IFwiRDpcXFxcY29kZVxcXFxwYXNkX1YxLjBcXFxccGFzZF9wY1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiRDpcXFxcY29kZVxcXFxwYXNkX1YxLjBcXFxccGFzZF9wY1xcXFx2aXRlLmNvbmZpZy5qc1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9pbXBvcnRfbWV0YV91cmwgPSBcImZpbGU6Ly8vRDovY29kZS9wYXNkX1YxLjAvcGFzZF9wYy92aXRlLmNvbmZpZy5qc1wiO2ltcG9ydCBwYXRoIGZyb20gJ3BhdGgnXHJcbmltcG9ydCB7IGRlZmluZUNvbmZpZywgbG9hZEVudiB9IGZyb20gJ3ZpdGUnXHJcbmltcG9ydCBzZXR0aW5ncyBmcm9tICcuL3NyYy9zZXR0aW5ncydcclxuaW1wb3J0IGNyZWF0ZVZpdGVQbHVnaW5zIGZyb20gJy4vdml0ZS9wbHVnaW5zJ1xyXG5cclxuLy8gaHR0cHM6Ly92aXRlanMuZGV2L2NvbmZpZy9cclxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29uZmlnKCh7IG1vZGUsIGNvbW1hbmQgfSkgPT4ge1xyXG4gIGNvbnN0IGVudiA9IGxvYWRFbnYobW9kZSwgcHJvY2Vzcy5jd2QoKSlcclxuICBjb25zdCB7IFZJVEVfQVBQX0VOViB9ID0gZW52XHJcblxyXG4gIHJldHVybiB7XHJcbiAgICAvLyBcdTkwRThcdTdGNzJcdTc1MUZcdTRFQTdcdTczQUZcdTU4ODNcdTU0OENcdTVGMDBcdTUzRDFcdTczQUZcdTU4ODNcdTRFMEJcdTc2ODRVUkwuXHJcbiAgICAvLyBcdTY4MzlcdTYzNkVDQVNcdTkxNERcdTdGNkVcdTUyQThcdTYwMDFcdThCQkVcdTdGNkViYXNlXHU4REVGXHU1Rjg0XHJcbiAgICBiYXNlOiBlbnYuVklURV9BUFBfRU5WID09PSAncHJvZHVjdGlvbicgPyBzZXR0aW5ncy5kZXBsb3lQYXRoKCkgOiAnLycsXHJcbiAgICBwbHVnaW5zOiBjcmVhdGVWaXRlUGx1Z2lucyhlbnYsIGNvbW1hbmQgPT09ICdidWlsZCcpLFxyXG4gICAgcmVzb2x2ZToge1xyXG4gICAgICAvLyBodHRwczovL2NuLnZpdGVqcy5kZXYvY29uZmlnLyNyZXNvbHZlLWFsaWFzXHJcbiAgICAgIGFsaWFzOiB7XHJcbiAgICAgICAgJ34nOiBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAnLi8nKSxcclxuICAgICAgICAnQCc6IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsICcuL3NyYycpXHJcbiAgICAgIH0sXHJcbiAgICAgIC8vIGh0dHBzOi8vY24udml0ZWpzLmRldi9jb25maWcvI3Jlc29sdmUtZXh0ZW5zaW9uc1xyXG4gICAgICBleHRlbnNpb25zOiBbJy5tanMnLCAnLmpzJywgJy50cycsICcuanN4JywgJy50c3gnLCAnLmpzb24nLCAnLnZ1ZSddXHJcbiAgICB9LFxyXG4gICAgc2VydmVyOiB7XHJcbiAgICAgIGhvc3Q6IHRydWUsXHJcbiAgICAgIG9wZW46IHRydWUsXHJcbiAgICAgIHByb3h5OiB7XHJcbiAgICAgICAgLy8gaHR0cHM6Ly9jbi52aXRlanMuZGV2L2NvbmZpZy8jc2VydmVyLXByb3h5XHJcbiAgICAgICAgJy9kZXYtYXBpJzoge1xyXG4gICAgICAgICAgICAvLyB0YXJnZXQ6ICdodHRwOi8vbG9jYWxob3N0OjgwODAnLCAvLyBcdTZENEJcdThCRDVcclxuICAgICAgICAgIHRhcmdldDogJ2h0dHA6Ly8xNzIuMTYuMTI5LjEwMTo4MDgwJywgLy8gXHU2QjYzXHU1RjBGXHU3M0FGXHU1ODgzXHJcbiAgICAgICAgICBjaGFuZ2VPcmlnaW46IHRydWUsXHJcbiAgICAgICAgICByZXdyaXRlOiAocCkgPT4gcC5yZXBsYWNlKC9eXFwvZGV2LWFwaS8sICcnKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLy8gXHU2REZCXHU1MkEwXHU1QkY5XHU3QjJDXHU0RTA5XHU2NUI5IEFQSSBcdTc2ODRcdTRFRTNcdTc0MDZcdTkxNERcdTdGNkVcclxuICAgICAgICAnL2FwaS92MS9qc3Nkay91cGxvYWQnOiB7XHJcbiAgICAgICAgICB0YXJnZXQ6ICdodHRwczovL3B4LmVmZmlyc3QuY29tJyxcclxuICAgICAgICAgIGNoYW5nZU9yaWdpbjogdHJ1ZSxcclxuICAgICAgICAgIHJld3JpdGU6IChwKSA9PiBwLnJlcGxhY2UoL15cXC9hcGlcXC92MVxcL2pzc2RrXFwvdXBsb2FkLywgJy9hcGkvdjEvanNzZGsvdXBsb2FkJylcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICAvLyBmaXg6ZXJyb3I6c3RkaW4+OjczNTY6MTogd2FybmluZzogXCJAY2hhcnNldFwiIG11c3QgYmUgdGhlIGZpcnN0IHJ1bGUgaW4gdGhlIGZpbGVcclxuICAgIGNzczoge1xyXG4gICAgICBwb3N0Y3NzOiB7XHJcbiAgICAgICAgcGx1Z2luczogW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBwb3N0Y3NzUGx1Z2luOiAnaW50ZXJuYWw6Y2hhcnNldC1yZW1vdmFsJyxcclxuICAgICAgICAgICAgQXRSdWxlOiB7XHJcbiAgICAgICAgICAgICAgY2hhcnNldDogKGF0UnVsZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGF0UnVsZS5uYW1lID09PSAnY2hhcnNldCcpIHtcclxuICAgICAgICAgICAgICAgICAgYXRSdWxlLnJlbW92ZSgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIF1cclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIGJ1aWxkOiB7XHJcbiAgICAgIHRhcmdldDogJ2VzMjAxNScsIC8vIFx1NjMwN1x1NUI5QVx1N0YxNlx1OEJEMVx1NzZFRVx1NjgwN1xyXG4gICAgICBtaW5pZnk6ICd0ZXJzZXInLFxyXG4gICAgICB0ZXJzZXJPcHRpb25zOiB7XHJcbiAgICAgICAgY29tcHJlc3M6IHtcclxuICAgICAgICAgIGRyb3BfY29uc29sZTogdHJ1ZSxcclxuICAgICAgICAgIGRyb3BfZGVidWdnZXI6IHRydWUsXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59KSIsICJjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSA9IFwiRDpcXFxcY29kZVxcXFxwYXNkX1YxLjBcXFxccGFzZF9wY1xcXFxzcmNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZmlsZW5hbWUgPSBcIkQ6XFxcXGNvZGVcXFxccGFzZF9WMS4wXFxcXHBhc2RfcGNcXFxcc3JjXFxcXHNldHRpbmdzLmpzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9EOi9jb2RlL3Bhc2RfVjEuMC9wYXNkX3BjL3NyYy9zZXR0aW5ncy5qc1wiO2V4cG9ydCBkZWZhdWx0IHtcclxuICAvKipcclxuICAgKiBcdTdGNTFcdTk4NzVcdTY4MDdcdTk4OThcclxuICAgKi9cclxuICB0aXRsZTogaW1wb3J0Lm1ldGEuZW52Py5WSVRFX0FQUF9USVRMRSB8fCAnXHU1RTczXHU1Qjg5XHU2QzM0XHU3NTM1JyxcclxuICAvKipcclxuICAgKiBcdTRGQTdcdThGQjlcdTY4MEZcdTRFM0JcdTk4OTggXHU2REYxXHU4MjcyXHU0RTNCXHU5ODk4dGhlbWUtZGFyayxcdTZENDVcdTgyNzJcdTRFM0JcdTk4OTh0aGVtZS1saWdodFxyXG4gICAqL1xyXG4gIHNpZGVUaGVtZTogJ3RoZW1lLWRhcmsnLFxyXG4gIC8qKlxyXG4gICAqIFx1NjYyRlx1NTQyNlx1N0NGQlx1N0VERlx1NUUwM1x1NUM0MFx1OTE0RFx1N0Y2RVxyXG4gICAqL1xyXG4gIHNob3dTZXR0aW5nczogdHJ1ZSxcclxuXHJcbiAgLyoqXHJcbiAgICogXHU2NjJGXHU1NDI2XHU2NjNFXHU3OTNBXHU5ODc2XHU5MEU4XHU1QkZDXHU4MjJBXHJcbiAgICovXHJcbiAgdG9wTmF2OiBmYWxzZSxcclxuXHJcbiAgLyoqXHJcbiAgICogXHU2NjJGXHU1NDI2XHU2NjNFXHU3OTNBIHRhZ3NWaWV3XHJcbiAgICovXHJcbiAgdGFnc1ZpZXc6IHRydWUsXHJcblxyXG4gIC8qKlxyXG4gICAqIFx1NjYyRlx1NTQyNlx1NTZGQVx1NUI5QVx1NTkzNFx1OTBFOFxyXG4gICAqL1xyXG4gIGZpeGVkSGVhZGVyOiBmYWxzZSxcclxuXHJcbiAgLyoqXHJcbiAgICogXHU2NjJGXHU1NDI2XHU2NjNFXHU3OTNBbG9nb1xyXG4gICAqL1xyXG4gIHNpZGViYXJMb2dvOiB0cnVlLFxyXG5cclxuICAvKipcclxuICAgKiBcdTY2MkZcdTU0MjZcdTY2M0VcdTc5M0FcdTUyQThcdTYwMDFcdTY4MDdcdTk4OThcclxuICAgKi9cclxuICBkeW5hbWljVGl0bGU6IGZhbHNlLFxyXG5cclxuICAvKipcclxuICAgKiBAdHlwZSB7c3RyaW5nIHwgYXJyYXl9ICdwcm9kdWN0aW9uJyB8IFsncHJvZHVjdGlvbicsICdkZXZlbG9wbWVudCddXHJcbiAgICogQGRlc2NyaXB0aW9uIE5lZWQgc2hvdyBlcnIgbG9ncyBjb21wb25lbnQuXHJcbiAgICogVGhlIGRlZmF1bHQgaXMgb25seSB1c2VkIGluIHRoZSBwcm9kdWN0aW9uIGVudlxyXG4gICAqIElmIHlvdSB3YW50IHRvIGFsc28gdXNlIGl0IGluIGRldiwgeW91IGNhbiBwYXNzIFsncHJvZHVjdGlvbicsICdkZXZlbG9wbWVudCddXHJcbiAgICovXHJcbiAgZXJyb3JMb2c6ICdwcm9kdWN0aW9uJyxcclxuXHJcbiAgLyoqXHJcbiAgICogQ0FTXHU3NjdCXHU1RjU1XHU5MTREXHU3RjZFXHJcbiAgICovXHJcbiAgLy8gXHU2NjJGXHU1NDI2XHU1NDJGXHU3NTI4Q0FTXHU3NjdCXHU1RjU1ICh0cnVlOiBDQVNcdTc2N0JcdTVGNTVcdTZBMjFcdTVGMEYsIGZhbHNlOiBcdTRGMjBcdTdFREZcdTc2N0JcdTVGNTVcdTZBMjFcdTVGMEYpXHJcbiAgY2FzRW5hYmxlOiAoaW1wb3J0Lm1ldGEuZW52Py5WSVRFX0FQUF9DQVNfRU5BQkxFIHx8ICdmYWxzZScpID09PSAndHJ1ZScsXHJcbiAgXHJcbiAgLy8gQ0FTXHU2NzBEXHU1MkExXHU1NjY4XHU1NzMwXHU1NzQwXHJcbiAgY2FzU2VydmVyVXJsOiBpbXBvcnQubWV0YS5lbnY/LlZJVEVfQVBQX0NBU19TRVJWRVJfVVJMIHx8ICdodHRwczovL3Jzc28uZ3hzZHh5LmNuJyxcclxuXHJcbiAgLy8gQ0FTXHU3OTY4XHU2MzZFXHU5QThDXHU4QkMxXHU1NzMwXHU1NzQwXHVGRjA4Q0FTM1x1OUVEOFx1OEJBNCBwM1x1RkYwOVxyXG4gIGNhc1ZhbGlkYXRlVXJsOiBpbXBvcnQubWV0YS5lbnY/LlZJVEVfQVBQX0NBU19WQUxJREFURV9VUkwgfHwgJ2h0dHBzOi8vcnNzby5neHNkeHkuY24vcDMvc2VydmljZVZhbGlkYXRlJyxcclxuICBcclxuICAvLyBcdTkwRThcdTdGNzJcdThERUZcdTVGODRcdTkxNERcdTdGNkUgKENBU1x1NkEyMVx1NUYwRjogL2Nhcy8sIFx1NEYyMFx1N0VERlx1NkEyMVx1NUYwRjogL3Nycy8pXHJcbiAgZGVwbG95UGF0aDogZnVuY3Rpb24oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jYXNFbmFibGUgPyAnL2Nhcy8nIDogJy9zcnMvJ1xyXG4gIH1cclxufVxyXG4iLCAiY29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2Rpcm5hbWUgPSBcIkQ6XFxcXGNvZGVcXFxccGFzZF9WMS4wXFxcXHBhc2RfcGNcXFxcdml0ZVxcXFxwbHVnaW5zXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCJEOlxcXFxjb2RlXFxcXHBhc2RfVjEuMFxcXFxwYXNkX3BjXFxcXHZpdGVcXFxccGx1Z2luc1xcXFxpbmRleC5qc1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9pbXBvcnRfbWV0YV91cmwgPSBcImZpbGU6Ly8vRDovY29kZS9wYXNkX1YxLjAvcGFzZF9wYy92aXRlL3BsdWdpbnMvaW5kZXguanNcIjtpbXBvcnQgdnVlIGZyb20gJ0B2aXRlanMvcGx1Z2luLXZ1ZSdcclxuXHJcbmltcG9ydCBjcmVhdGVBdXRvSW1wb3J0IGZyb20gJy4vYXV0by1pbXBvcnQnXHJcbmltcG9ydCBjcmVhdGVTdmdJY29uIGZyb20gJy4vc3ZnLWljb24nXHJcbmltcG9ydCBjcmVhdGVDb21wcmVzc2lvbiBmcm9tICcuL2NvbXByZXNzaW9uJ1xyXG5pbXBvcnQgY3JlYXRlU2V0dXBFeHRlbmQgZnJvbSAnLi9zZXR1cC1leHRlbmQnXHJcblxyXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjcmVhdGVWaXRlUGx1Z2lucyh2aXRlRW52LCBpc0J1aWxkID0gZmFsc2UpIHtcclxuICAgIGNvbnN0IHZpdGVQbHVnaW5zID0gW3Z1ZSgpXVxyXG4gICAgdml0ZVBsdWdpbnMucHVzaChjcmVhdGVBdXRvSW1wb3J0KCkpXHJcblx0dml0ZVBsdWdpbnMucHVzaChjcmVhdGVTZXR1cEV4dGVuZCgpKVxyXG4gICAgdml0ZVBsdWdpbnMucHVzaChjcmVhdGVTdmdJY29uKGlzQnVpbGQpKVxyXG5cdGlzQnVpbGQgJiYgdml0ZVBsdWdpbnMucHVzaCguLi5jcmVhdGVDb21wcmVzc2lvbih2aXRlRW52KSlcclxuICAgIHJldHVybiB2aXRlUGx1Z2luc1xyXG59XHJcbiIsICJjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSA9IFwiRDpcXFxcY29kZVxcXFxwYXNkX1YxLjBcXFxccGFzZF9wY1xcXFx2aXRlXFxcXHBsdWdpbnNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZmlsZW5hbWUgPSBcIkQ6XFxcXGNvZGVcXFxccGFzZF9WMS4wXFxcXHBhc2RfcGNcXFxcdml0ZVxcXFxwbHVnaW5zXFxcXGF1dG8taW1wb3J0LmpzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9EOi9jb2RlL3Bhc2RfVjEuMC9wYXNkX3BjL3ZpdGUvcGx1Z2lucy9hdXRvLWltcG9ydC5qc1wiO2ltcG9ydCBhdXRvSW1wb3J0IGZyb20gJ3VucGx1Z2luLWF1dG8taW1wb3J0L3ZpdGUnXHJcblxyXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjcmVhdGVBdXRvSW1wb3J0KCkge1xyXG4gICAgcmV0dXJuIGF1dG9JbXBvcnQoe1xyXG4gICAgICAgIGltcG9ydHM6IFtcclxuICAgICAgICAgICAgJ3Z1ZScsXHJcbiAgICAgICAgICAgICd2dWUtcm91dGVyJyxcclxuICAgICAgICAgICAgJ3BpbmlhJ1xyXG4gICAgICAgIF0sXHJcbiAgICAgICAgZHRzOiBmYWxzZVxyXG4gICAgfSlcclxufVxyXG4iLCAiY29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2Rpcm5hbWUgPSBcIkQ6XFxcXGNvZGVcXFxccGFzZF9WMS4wXFxcXHBhc2RfcGNcXFxcdml0ZVxcXFxwbHVnaW5zXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCJEOlxcXFxjb2RlXFxcXHBhc2RfVjEuMFxcXFxwYXNkX3BjXFxcXHZpdGVcXFxccGx1Z2luc1xcXFxzdmctaWNvbi5qc1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9pbXBvcnRfbWV0YV91cmwgPSBcImZpbGU6Ly8vRDovY29kZS9wYXNkX1YxLjAvcGFzZF9wYy92aXRlL3BsdWdpbnMvc3ZnLWljb24uanNcIjtpbXBvcnQgeyBjcmVhdGVTdmdJY29uc1BsdWdpbiB9IGZyb20gJ3ZpdGUtcGx1Z2luLXN2Zy1pY29ucydcclxuaW1wb3J0IHBhdGggZnJvbSAncGF0aCdcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZVN2Z0ljb24oaXNCdWlsZCkge1xyXG4gICAgcmV0dXJuIGNyZWF0ZVN2Z0ljb25zUGx1Z2luKHtcclxuXHRcdGljb25EaXJzOiBbcGF0aC5yZXNvbHZlKHByb2Nlc3MuY3dkKCksICdzcmMvYXNzZXRzL2ljb25zL3N2ZycpXSxcclxuICAgICAgICBzeW1ib2xJZDogJ2ljb24tW2Rpcl0tW25hbWVdJyxcclxuICAgICAgICBzdmdvT3B0aW9uczogaXNCdWlsZFxyXG4gICAgfSlcclxufVxyXG4iLCAiY29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2Rpcm5hbWUgPSBcIkQ6XFxcXGNvZGVcXFxccGFzZF9WMS4wXFxcXHBhc2RfcGNcXFxcdml0ZVxcXFxwbHVnaW5zXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCJEOlxcXFxjb2RlXFxcXHBhc2RfVjEuMFxcXFxwYXNkX3BjXFxcXHZpdGVcXFxccGx1Z2luc1xcXFxjb21wcmVzc2lvbi5qc1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9pbXBvcnRfbWV0YV91cmwgPSBcImZpbGU6Ly8vRDovY29kZS9wYXNkX1YxLjAvcGFzZF9wYy92aXRlL3BsdWdpbnMvY29tcHJlc3Npb24uanNcIjtpbXBvcnQgY29tcHJlc3Npb24gZnJvbSAndml0ZS1wbHVnaW4tY29tcHJlc3Npb24nXHJcblxyXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjcmVhdGVDb21wcmVzc2lvbihlbnYpIHtcclxuICAgIGNvbnN0IHsgVklURV9CVUlMRF9DT01QUkVTUyB9ID0gZW52XHJcbiAgICBjb25zdCBwbHVnaW4gPSBbXVxyXG4gICAgaWYgKFZJVEVfQlVJTERfQ09NUFJFU1MpIHtcclxuICAgICAgICBjb25zdCBjb21wcmVzc0xpc3QgPSBWSVRFX0JVSUxEX0NPTVBSRVNTLnNwbGl0KCcsJylcclxuICAgICAgICBpZiAoY29tcHJlc3NMaXN0LmluY2x1ZGVzKCdnemlwJykpIHtcclxuICAgICAgICAgICAgLy8gaHR0cDovL2RvYy5ydW95aS52aXAvcnVveWktdnVlL290aGVyL2ZhcS5odG1sI1x1NEY3Rlx1NzUyOGd6aXBcdTg5RTNcdTUzOEJcdTdGMjlcdTk3NTlcdTYwMDFcdTY1ODdcdTRFRjZcclxuICAgICAgICAgICAgcGx1Z2luLnB1c2goXHJcbiAgICAgICAgICAgICAgICBjb21wcmVzc2lvbih7XHJcbiAgICAgICAgICAgICAgICAgICAgZXh0OiAnLmd6JyxcclxuICAgICAgICAgICAgICAgICAgICBkZWxldGVPcmlnaW5GaWxlOiBmYWxzZVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoY29tcHJlc3NMaXN0LmluY2x1ZGVzKCdicm90bGknKSkge1xyXG4gICAgICAgICAgICBwbHVnaW4ucHVzaChcclxuICAgICAgICAgICAgICAgIGNvbXByZXNzaW9uKHtcclxuICAgICAgICAgICAgICAgICAgICBleHQ6ICcuYnInLFxyXG4gICAgICAgICAgICAgICAgICAgIGFsZ29yaXRobTogJ2Jyb3RsaUNvbXByZXNzJyxcclxuICAgICAgICAgICAgICAgICAgICBkZWxldGVPcmlnaW5GaWxlOiBmYWxzZVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBwbHVnaW5cclxufVxyXG4iLCAiY29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2Rpcm5hbWUgPSBcIkQ6XFxcXGNvZGVcXFxccGFzZF9WMS4wXFxcXHBhc2RfcGNcXFxcdml0ZVxcXFxwbHVnaW5zXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCJEOlxcXFxjb2RlXFxcXHBhc2RfVjEuMFxcXFxwYXNkX3BjXFxcXHZpdGVcXFxccGx1Z2luc1xcXFxzZXR1cC1leHRlbmQuanNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL0Q6L2NvZGUvcGFzZF9WMS4wL3Bhc2RfcGMvdml0ZS9wbHVnaW5zL3NldHVwLWV4dGVuZC5qc1wiO2ltcG9ydCBzZXR1cEV4dGVuZCBmcm9tICd1bnBsdWdpbi12dWUtc2V0dXAtZXh0ZW5kLXBsdXMvdml0ZSdcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZVNldHVwRXh0ZW5kKCkge1xyXG4gICAgcmV0dXJuIHNldHVwRXh0ZW5kKHt9KVxyXG59XHJcbiJdLAogICJtYXBwaW5ncyI6ICI7QUFBcVEsT0FBT0EsV0FBVTtBQUN0UixTQUFTLGNBQWMsZUFBZTs7O0FDRHVPLElBQU8sbUJBQVE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUkxUixPQUFPLFlBQVksS0FBSyxrQkFBa0I7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUkxQyxXQUFXO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFJWCxjQUFjO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLZCxRQUFRO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLUixVQUFVO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLVixhQUFhO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLYixhQUFhO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLYixjQUFjO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRZCxVQUFVO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU1WLFlBQVksWUFBWSxLQUFLLHVCQUF1QixhQUFhO0FBQUE7QUFBQSxFQUdqRSxjQUFjLFlBQVksS0FBSywyQkFBMkI7QUFBQTtBQUFBLEVBRzFELGdCQUFnQixZQUFZLEtBQUssNkJBQTZCO0FBQUE7QUFBQSxFQUc5RCxZQUFZLFdBQVc7QUFDckIsV0FBTyxLQUFLLFlBQVksVUFBVTtBQUFBLEVBQ3BDO0FBQ0Y7OztBQy9Eb1MsT0FBTyxTQUFT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