[CHANGE] Use the now official release version

This commit is contained in:
Peter Pfeufer 2024-01-25 18:46:26 +01:00
parent ba213db493
commit 5cd5180a91
No known key found for this signature in database
GPG Key ID: 6051D2C6AD4EBC27
3 changed files with 81 additions and 54 deletions

View File

@ -1,14 +1,14 @@
/** /**
* filterDropDown.js * filterDropDown.js
* *
* Copyright (C) 2017-18 Erik Kalkoken * Copyright (C) 2017-24 Erik Kalkoken
* *
* Extension for the jQuery plug-in DataTables (developed and tested with v1.10.15) * Extension for the jQuery plug-in DataTables (developed and tested with v1.13.7)
* *
* Version 0.4.0 * Version 0.5.0
**/ **/
(($) => { (($) => {
'use strict'; "use strict";
/** /**
* Parse initialization array and returns filterDef array to faster and easy use, * Parse initialization array and returns filterDef array to faster and easy use,
@ -24,62 +24,80 @@
* @type {{autoSize: boolean, bootstrap_version: number, columnsIdxList: *[], columns: *[], bootstrap: boolean, label: string, ajax: null}} * @type {{autoSize: boolean, bootstrap_version: number, columnsIdxList: *[], columns: *[], bootstrap: boolean, label: string, ajax: null}}
*/ */
const filterDef = { const filterDef = {
'columns': [], columns: [],
'columnsIdxList': [], columnsIdxList: [],
'bootstrap': false, bootstrap: false,
'bootstrap_version': 3, bootstrap_version: 3,
'autoSize': true, autoSize: true,
'ajax': null, ajax: null,
'label': 'Filter ' label: "Filter ",
}; };
// Set filter properties if they have been defined otherwise the defaults will be used // Set filter properties if they have been defined otherwise the defaults will be used
if (('bootstrap' in initArray) && (typeof initArray.bootstrap === 'boolean')) { if (
"bootstrap" in initArray &&
typeof initArray.bootstrap === "boolean"
) {
filterDef.bootstrap = initArray.bootstrap; filterDef.bootstrap = initArray.bootstrap;
} }
if (('bootstrap_version' in initArray) && (typeof initArray.bootstrap_version === 'number')) { if (
"bootstrap_version" in initArray &&
typeof initArray.bootstrap_version === "number"
) {
filterDef.bootstrap_version = initArray.bootstrap_version; filterDef.bootstrap_version = initArray.bootstrap_version;
} }
if (('autoSize' in initArray) && (typeof initArray.autoSize === 'boolean')) { if (
"autoSize" in initArray &&
typeof initArray.autoSize === "boolean"
) {
filterDef.autoSize = initArray.autoSize; filterDef.autoSize = initArray.autoSize;
} }
if (('ajax' in initArray) && (typeof initArray.ajax === 'string')) { if ("ajax" in initArray && typeof initArray.ajax === "string") {
filterDef.ajax = initArray.ajax; filterDef.ajax = initArray.ajax;
} }
if (('label' in initArray) && (typeof initArray.label === 'string')) { if ("label" in initArray && typeof initArray.label === "string") {
filterDef.label = initArray.label; filterDef.label = initArray.label;
} }
// Add definition for each column // Add definition for each column
if ('columns' in initArray) { if ("columns" in initArray) {
initArray.columns.forEach((initColumn) => { initArray.columns.forEach((initColumn) => {
if (('idx' in initColumn) && (typeof initColumn.idx === 'number')) { if ("idx" in initColumn && typeof initColumn.idx === "number") {
// Initialize column // Initialize column
const idx = initColumn.idx; const idx = initColumn.idx;
filterDef.columns[idx] = { filterDef.columns[idx] = {
'title': null, title: null,
'maxWidth': null, maxWidth: null,
'autoSize': true autoSize: true,
}; };
// Add to a list of indices in the same order they appear in the init array // Add to a list of indices in the same order they appear in the init array
filterDef.columnsIdxList.push(idx); filterDef.columnsIdxList.push(idx);
// Set column properties if they have been defined otherwise the defaults will be used // Set column properties if they have been defined otherwise the defaults will be used
if (('title' in initColumn) && (typeof initColumn.title === 'string')) { if (
"title" in initColumn &&
typeof initColumn.title === "string"
) {
filterDef.columns[idx].title = initColumn.title; filterDef.columns[idx].title = initColumn.title;
} }
if (('maxWidth' in initColumn) && (typeof initColumn.maxWidth === 'string')) { if (
"maxWidth" in initColumn &&
typeof initColumn.maxWidth === "string"
) {
filterDef.columns[idx].maxWidth = initColumn.maxWidth; filterDef.columns[idx].maxWidth = initColumn.maxWidth;
} }
if (('autoSize' in initColumn) && (typeof initColumn.autoSize === 'boolean')) { if (
"autoSize" in initColumn &&
typeof initColumn.autoSize === "boolean"
) {
filterDef.columns[idx].autoSize = initColumn.autoSize; filterDef.columns[idx].autoSize = initColumn.autoSize;
} }
} }
@ -96,7 +114,7 @@
* @param d * @param d
*/ */
const addOption = (select, d) => { const addOption = (select, d) => {
if (d !== '') { if (d !== "") {
select.append(`<option value="${d}">${d}</option>`); select.append(`<option value="${d}">${d}</option>`);
} }
}; };
@ -114,7 +132,7 @@
$(select).change(() => { $(select).change(() => {
const val = $.fn.dataTable.util.escapeRegex($(select).val()); const val = $.fn.dataTable.util.escapeRegex($(select).val());
column.search(val ? `^${val}$` : '', true, false).draw(); column.search(val ? `^${val}$` : "", true, false).draw();
}); });
return select; return select;
@ -122,8 +140,8 @@
// Add filterDropDown container div, draw select elements with default options. // Add filterDropDown container div, draw select elements with default options.
// Use preInit so that elements are created and correctly shown before data is loaded // Use preInit so that elements are created and correctly shown before data is loaded
$(document).on('preInit.dt', (e, settings) => { $(document).on("preInit.dt", (e, settings) => {
if (e.namespace !== 'dt') { if (e.namespace !== "dt") {
return; return;
} }
@ -138,7 +156,7 @@
// Only proceed if the filter has been defined in the current table, // Only proceed if the filter has been defined in the current table,
// otherwise don't do anything. // otherwise don't do anything.
if (!('filterDropDown' in initObj)) { if (!("filterDropDown" in initObj)) {
return; return;
} }
@ -157,7 +175,9 @@
const filterWrapperId = `${id}_filterWrapper`; const filterWrapperId = `${id}_filterWrapper`;
// Set CSS classes for the filter wrapper div depending on bootstrap setting // Set CSS classes for the filter wrapper div depending on bootstrap setting
let divCssClass = `${filterWrapperId} ${(filterDef.bootstrap) ? 'form-inline' : ''}`; let divCssClass = `${filterWrapperId} ${
filterDef.bootstrap ? "form-inline" : ""
}`;
if (filterDef.bootstrap && filterDef.bootstrap_version === 5) { if (filterDef.bootstrap && filterDef.bootstrap_version === 5) {
divCssClass = `${filterWrapperId} input-group my-3`; divCssClass = `${filterWrapperId} input-group my-3`;
} }
@ -170,11 +190,12 @@
const idx = this.index(); const idx = this.index();
// set title of current column // set title of current column
let colName = (filterDef.columns[idx].title !== null) let colName =
filterDef.columns[idx].title !== null
? filterDef.columns[idx].title ? filterDef.columns[idx].title
: $(this.header()).html(); : $(this.header()).html();
if (colName === '') { if (colName === "") {
colName = `column ${idx + 1}`; colName = `column ${idx + 1}`;
} }
@ -187,29 +208,33 @@
selectMarkup = `<select id="${selectId}" class="form-select w-auto ms-2 ${id}_filterSelect"></select>`; selectMarkup = `<select id="${selectId}" class="form-select w-auto ms-2 ${id}_filterSelect"></select>`;
} }
$('#' + filterWrapperId).append(selectMarkup); $("#" + filterWrapperId).append(selectMarkup);
// Initializing select for current column and applying event to react to changes // Initializing select for current column and applying event to react to changes
const select = $('#' + selectId) const select = $("#" + selectId)
.empty() .empty()
.append(`<option value="">(${colName})</option>`); .append(`<option value="">(${colName})</option>`);
// Set max width of select elements to current width (which is defined by the size of the title) // Set max width of select elements to current width (which is defined by the size of the title)
// Turn off on for very small screens for responsive design, or if autoSize has been set to false // Turn off on for very small screens for responsive design, or if autoSize has been set to false
if (filterDef.autoSize && filterDef.columns[idx].autoSize && (screen.width > 768)) { if (
select.css('max-width', select.outerWidth()); filterDef.autoSize &&
filterDef.columns[idx].autoSize &&
screen.width > 768
) {
select.css("max-width", select.outerWidth());
} }
// Apply optional css style if defined in the init array will override automatic max width setting // Apply optional css style if defined in the init array will override automatic max width setting
if (filterDef.columns[idx].maxWidth !== null) { if (filterDef.columns[idx].maxWidth !== null) {
select.css('max-width', filterDef.columns[idx].maxWidth); select.css("max-width", filterDef.columns[idx].maxWidth);
} }
}); });
}); });
// Filter table and add available options to dropDowns // Filter table and add available options to dropDowns
$(document).on('init.dt', (e, settings) => { $(document).on("init.dt", (e, settings) => {
if (e.namespace !== 'dt') { if (e.namespace !== "dt") {
return; return;
} }
@ -223,7 +248,7 @@
const initObj = api.init(); const initObj = api.init();
// Only proceed if a filter has been defined in the current table, otherwise don't do anything. // Only proceed if a filter has been defined in the current table, otherwise don't do anything.
if (!('filterDropDown' in initObj)) { if (!("filterDropDown" in initObj)) {
return; return;
} }
@ -235,17 +260,19 @@
const column = this; const column = this;
const select = initSelectForColumn(id, column); const select = initSelectForColumn(id, column);
column.data().unique().sort().each((d) => { column
.data()
.unique()
.sort()
.each((d) => {
addOption(select, d); addOption(select, d);
}); });
}); });
} else { } else {
// Fetch column options from server for server side processing // Fetch column options from server for server side processing
const columnsQuery = ( const columnsQuery = `columns=${encodeURIComponent(
`columns=${encodeURIComponent(
api.columns(filterDef.columnsIdxList).dataSrc().join() api.columns(filterDef.columnsIdxList).dataSrc().join()
)}` )}`;
);
$.getJSON(`${filterDef.ajax}?${columnsQuery}`, (columnsOptions) => { $.getJSON(`${filterDef.ajax}?${columnsQuery}`, (columnsOptions) => {
api.columns(filterDef.columnsIdxList).every(function () { api.columns(filterDef.columnsIdxList).every(function () {
@ -258,7 +285,9 @@
addOption(select, d); addOption(select, d);
}); });
} else { } else {
console.warn(`Missing column '${columnName}' in ajax response.`); console.warn(
`Missing column '${columnName}' in ajax response.`
);
} }
}); });
}); });

View File

@ -1,2 +1 @@
(c=>{"use strict";const r=t=>{const e={columns:[],columnsIdxList:[],bootstrap:!1,bootstrap_version:3,autoSize:!0,ajax:null,label:"Filter "};return"bootstrap"in t&&"boolean"==typeof t.bootstrap&&(e.bootstrap=t.bootstrap),"bootstrap_version"in t&&"number"==typeof t.bootstrap_version&&(e.bootstrap_version=t.bootstrap_version),"autoSize"in t&&"boolean"==typeof t.autoSize&&(e.autoSize=t.autoSize),"ajax"in t&&"string"==typeof t.ajax&&(e.ajax=t.ajax),"label"in t&&"string"==typeof t.label&&(e.label=t.label),"columns"in t&&t.columns.forEach(t=>{if("idx"in t&&"number"==typeof t.idx){const o=t.idx;e.columns[o]={title:null,maxWidth:null,autoSize:!0},e.columnsIdxList.push(o),"title"in t&&"string"==typeof t.title&&(e.columns[o].title=t.title),"maxWidth"in t&&"string"==typeof t.maxWidth&&(e.columns[o].maxWidth=t.maxWidth),"autoSize"in t&&"boolean"==typeof t.autoSize&&(e.columns[o].autoSize=t.autoSize)}}),e},l=(t,o)=>{""!==o&&t.append(`<option value="${o}">${o}</option>`)},u=(t,o)=>{const e=c(`#${t}_filterSelect`+o.index());return c(e).change(()=>{const t=c.fn.dataTable.util.escapeRegex(c(e).val());o.search(t?`^${t}$`:"",!0,!1).draw()}),e};c(document).on("preInit.dt",(t,o)=>{if("dt"===t.namespace){const e=new c.fn.dataTable.Api(o),s=e.table().node().id,n=e.init();if("filterDropDown"in n){const a=r(n.filterDropDown);if(0!==a.columns.length){const i=e.table().container(),l=s+"_filterWrapper";let t=l+" "+(a.bootstrap?"form-inline":"");a.bootstrap&&5===a.bootstrap_version&&(t=l+" input-group my-3"),c(i).prepend(`<div id="${l}" class="${t}"><span class="pt-2">${a.label}</span></div>`),e.columns(a.columnsIdxList).every(function(){const t=this.index();let o=null!==a.columns[t].title?a.columns[t].title:c(this.header()).html();""===o&&(o="column "+(t+1));const e=s+"_filterSelect"+t;let n=`<select id="${e}" class="form-control ${s}_filterSelect"></select>`;a.bootstrap&&5===a.bootstrap_version&&(n=`<select id="${e}" class="form-select w-auto ms-2 ${s}_filterSelect"></select>`),c("#"+l).append(n);const i=c("#"+e).empty().append(`<option value="">(${o})</option>`);a.autoSize&&a.columns[t].autoSize&&768<screen.width&&i.css("max-width",i.outerWidth()),null!==a.columns[t].maxWidth&&i.css("max-width",a.columns[t].maxWidth)})}}}}),c(document).on("init.dt",(t,o)=>{if("dt"===t.namespace){const e=new c.fn.dataTable.Api(o),i=e.table().node().id,n=e.init();if("filterDropDown"in n){const s=r(n.filterDropDown);if(null==s.ajax)e.columns(s.columnsIdxList).every(function(){const t=this,o=u(i,t);t.data().unique().sort().each(t=>{l(o,t)})});else{const a="columns="+encodeURIComponent(e.columns(s.columnsIdxList).dataSrc().join());c.getJSON(s.ajax+"?"+a,n=>{e.columns(s.columnsIdxList).every(function(){const t=this,o=u(i,t),e=t.dataSrc();e in n?n[e].forEach(t=>{l(o,t)}):console.warn(`Missing column '${e}' in ajax response.`)})})}}}})})(jQuery); ($=>{"use strict";const parseInitArray=initArray=>{const filterDef={columns:[],columnsIdxList:[],bootstrap:false,bootstrap_version:3,autoSize:true,ajax:null,label:"Filter "};if("bootstrap"in initArray&&typeof initArray.bootstrap==="boolean"){filterDef.bootstrap=initArray.bootstrap}if("bootstrap_version"in initArray&&typeof initArray.bootstrap_version==="number"){filterDef.bootstrap_version=initArray.bootstrap_version}if("autoSize"in initArray&&typeof initArray.autoSize==="boolean"){filterDef.autoSize=initArray.autoSize}if("ajax"in initArray&&typeof initArray.ajax==="string"){filterDef.ajax=initArray.ajax}if("label"in initArray&&typeof initArray.label==="string"){filterDef.label=initArray.label}if("columns"in initArray){initArray.columns.forEach(initColumn=>{if("idx"in initColumn&&typeof initColumn.idx==="number"){const idx=initColumn.idx;filterDef.columns[idx]={title:null,maxWidth:null,autoSize:true};filterDef.columnsIdxList.push(idx);if("title"in initColumn&&typeof initColumn.title==="string"){filterDef.columns[idx].title=initColumn.title}if("maxWidth"in initColumn&&typeof initColumn.maxWidth==="string"){filterDef.columns[idx].maxWidth=initColumn.maxWidth}if("autoSize"in initColumn&&typeof initColumn.autoSize==="boolean"){filterDef.columns[idx].autoSize=initColumn.autoSize}}})}return filterDef};const addOption=(select,d)=>{if(d!==""){select.append(`<option value="${d}">${d}</option>`)}};const initSelectForColumn=(id,column)=>{const select=$(`#${id}_filterSelect${column.index()}`);$(select).change(()=>{const val=$.fn.dataTable.util.escapeRegex($(select).val());column.search(val?`^${val}$`:"",true,false).draw()});return select};$(document).on("preInit.dt",(e,settings)=>{if(e.namespace!=="dt"){return}const api=new $.fn.dataTable.Api(settings);const id=api.table().node().id;const initObj=api.init();if(!("filterDropDown"in initObj)){return}const filterDef=parseInitArray(initObj.filterDropDown);if(filterDef.columns.length===0){return}const container=api.table().container();const filterWrapperId=`${id}_filterWrapper`;let divCssClass=`${filterWrapperId} ${filterDef.bootstrap?"form-inline":""}`;if(filterDef.bootstrap&&filterDef.bootstrap_version===5){divCssClass=`${filterWrapperId} input-group my-3`}$(container).prepend(`<div id="${filterWrapperId}" class="${divCssClass}"><span class="pt-2">${filterDef.label}</span></div>`);api.columns(filterDef.columnsIdxList).every(function(){const idx=this.index();let colName=filterDef.columns[idx].title!==null?filterDef.columns[idx].title:$(this.header()).html();if(colName===""){colName=`column ${idx+1}`}const selectId=`${id}_filterSelect${idx}`;let selectMarkup=`<select id="${selectId}" class="form-control ${id}_filterSelect"></select>`;if(filterDef.bootstrap&&filterDef.bootstrap_version===5){selectMarkup=`<select id="${selectId}" class="form-select w-auto ms-2 ${id}_filterSelect"></select>`}$("#"+filterWrapperId).append(selectMarkup);const select=$("#"+selectId).empty().append(`<option value="">(${colName})</option>`);if(filterDef.autoSize&&filterDef.columns[idx].autoSize&&screen.width>768){select.css("max-width",select.outerWidth())}if(filterDef.columns[idx].maxWidth!==null){select.css("max-width",filterDef.columns[idx].maxWidth)}})});$(document).on("init.dt",(e,settings)=>{if(e.namespace!=="dt"){return}const api=new $.fn.dataTable.Api(settings);const id=api.table().node().id;const initObj=api.init();if(!("filterDropDown"in initObj)){return}const filterDef=parseInitArray(initObj.filterDropDown);if(filterDef.ajax==null){api.columns(filterDef.columnsIdxList).every(function(){const column=this;const select=initSelectForColumn(id,column);column.data().unique().sort().each(d=>{addOption(select,d)})})}else{const columnsQuery=`columns=${encodeURIComponent(api.columns(filterDef.columnsIdxList).dataSrc().join())}`;$.getJSON(`${filterDef.ajax}?${columnsQuery}`,columnsOptions=>{api.columns(filterDef.columnsIdxList).every(function(){const column=this;const select=initSelectForColumn(id,column);const columnName=column.dataSrc();if(columnName in columnsOptions){columnsOptions[columnName].forEach(d=>{addOption(select,d)})}else{console.warn(`Missing column '${columnName}' in ajax response.`)}})})}})})(jQuery);
//# sourceMappingURL=filterDropDown.min.js.map

View File

@ -1 +0,0 @@
{"version":3,"sources":["filterDropDown.js"],"names":["parseInitArray","filterDef","columns","columnsIdxList","bootstrap","bootstrap_version","autoSize","ajax","label","initArray","forEach","initColumn","idx","title","maxWidth","push","addOption","select","d","append","initSelectForColumn","id","column","$","index","change","val","fn","dataTable","util","escapeRegex","search","draw","document","on","e","settings","namespace","api","Api","table","node","initObj","init","filterDropDown","length","container","filterWrapperId","let","divCssClass","prepend","every","this","colName","header","html","selectId","selectMarkup","empty","screen","width","css","outerWidth","data","unique","sort","each","columnsQuery","encodeURIComponent","dataSrc","join","getJSON","columnName","columnsOptions","console","warn","jQuery"],"mappings":"CASC,IACG,aASA,MAAMA,EAAiB,IAMnB,MAAMC,EAAY,CACdC,QAAW,GACXC,eAAkB,GAClBC,UAAa,CAAA,EACbC,kBAAqB,EACrBC,SAAY,CAAA,EACZC,KAAQ,KACRC,MAAS,SACb,EAuDA,MApDK,cAAeC,GAA8C,WAA/B,OAAOA,EAAUL,YAChDH,EAAUG,UAAYK,EAAUL,WAG/B,sBAAuBK,GAAsD,UAAvC,OAAOA,EAAUJ,oBACxDJ,EAAUI,kBAAoBI,EAAUJ,mBAGvC,aAAcI,GAA6C,WAA9B,OAAOA,EAAUH,WAC/CL,EAAUK,SAAWG,EAAUH,UAG9B,SAAUG,GAAyC,UAA1B,OAAOA,EAAUF,OAC3CN,EAAUM,KAAOE,EAAUF,MAG1B,UAAWE,GAA0C,UAA3B,OAAOA,EAAUD,QAC5CP,EAAUO,MAAQC,EAAUD,OAI5B,YAAaC,GACbA,EAAUP,QAAQQ,QAAQ,IACtB,GAAK,QAASC,GAA0C,UAA1B,OAAOA,EAAWC,IAAmB,CAE/D,MAAMA,EAAMD,EAAWC,IAEvBX,EAAUC,QAAQU,GAAO,CACrBC,MAAS,KACTC,SAAY,KACZR,SAAY,CAAA,CAChB,EAGAL,EAAUE,eAAeY,KAAKH,CAAG,EAG5B,UAAWD,GAA4C,UAA5B,OAAOA,EAAWE,QAC9CZ,EAAUC,QAAQU,GAAKC,MAAQF,EAAWE,OAGzC,aAAcF,GAA+C,UAA/B,OAAOA,EAAWG,WACjDb,EAAUC,QAAQU,GAAKE,SAAWH,EAAWG,UAG5C,aAAcH,GAA+C,WAA/B,OAAOA,EAAWL,WACjDL,EAAUC,QAAQU,GAAKN,SAAWK,EAAWL,SAErD,CACJ,CAAC,EAGEL,CACX,EAQMe,EAAY,CAACC,EAAQC,KACb,KAANA,GACAD,EAAOE,yBAAyBD,MAAMA,YAAY,CAE1D,EASME,EAAsB,CAACC,EAAIC,KAC7B,MAAML,EAASM,MAAMF,iBAAkBC,EAAOE,MAAM,CAAG,EAQvD,OANAD,EAAEN,CAAM,EAAEQ,OAAO,KACb,MAAMC,EAAMH,EAAEI,GAAGC,UAAUC,KAAKC,YAAYP,EAAEN,CAAM,EAAES,IAAI,CAAC,EAE3DJ,EAAOS,OAAOL,MAAUA,KAAS,GAAI,CAAA,EAAM,CAAA,CAAK,EAAEM,KAAK,CAC3D,CAAC,EAEMf,CACX,EAIAM,EAAEU,QAAQ,EAAEC,GAAG,aAAc,CAACC,EAAGC,KAC7B,GAAoB,OAAhBD,EAAEE,UAAN,CAKA,MAAMC,EAAM,IAAIf,EAAEI,GAAGC,UAAUW,IAAIH,CAAQ,EAGrCf,EAAKiB,EAAIE,MAAM,EAAEC,KAAK,EAAEpB,GAGxBqB,EAAUJ,EAAIK,KAAK,EAIzB,GAAM,mBAAoBD,EAA1B,CAKA,MAAMzC,EAAYD,EAAe0C,EAAQE,cAAc,EAGvD,GAAiC,IAA7B3C,EAAUC,QAAQ2C,OAAtB,CAKA,MAAMC,EAAYR,EAAIE,MAAM,EAAEM,UAAU,EAGlCC,EAAqB1B,EAAH,iBAGxB2B,IAAIC,EAAiBF,EAAH,KAAuB9C,EAAmB,UAAI,cAAgB,IAC5EA,EAAUG,WAA6C,IAAhCH,EAAUI,oBACjC4C,EAAiBF,EAAH,qBAGlBxB,EAAEuB,CAAS,EAAEI,oBACGH,aAA2BE,yBAAmChD,EAAUO,oBACxF,EAEA8B,EAAIpC,QAAQD,EAAUE,cAAc,EAAEgD,MAAM,WACxC,MAAMvC,EAAMwC,KAAK5B,MAAM,EAGvBwB,IAAIK,EAA4C,OAAjCpD,EAAUC,QAAQU,GAAKC,MAChCZ,EAAUC,QAAQU,GAAKC,MACvBU,EAAE6B,KAAKE,OAAO,CAAC,EAAEC,KAAK,EAEZ,KAAZF,IACAA,EAAU,WAAUzC,EAAM,IAI9B,MAAM4C,EAAcnC,EAAH,gBAAqBT,EAGtCoC,IAAIS,iBAA8BD,0BAAiCnC,4BAC/DpB,EAAUG,WAA6C,IAAhCH,EAAUI,oBACjCoD,iBAA8BD,qCAA4CnC,6BAG9EE,EAAE,IAAMwB,CAAe,EAAE5B,OAAOsC,CAAY,EAG5C,MAAMxC,EAASM,EAAE,IAAMiC,CAAQ,EAC1BE,MAAM,EACNvC,4BAA4BkC,aAAmB,EAIhDpD,EAAUK,UAAYL,EAAUC,QAAQU,GAAKN,UAA4B,IAAfqD,OAAOC,OACjE3C,EAAO4C,IAAI,YAAa5C,EAAO6C,WAAW,CAAC,EAIP,OAApC7D,EAAUC,QAAQU,GAAKE,UACvBG,EAAO4C,IAAI,YAAa5D,EAAUC,QAAQU,GAAKE,QAAQ,CAE/D,CAAC,CAxDD,CARA,CAfA,CAgFJ,CAAC,EAGDS,EAAEU,QAAQ,EAAEC,GAAG,UAAW,CAACC,EAAGC,KAC1B,GAAoB,OAAhBD,EAAEE,UAAN,CAKA,MAAMC,EAAM,IAAIf,EAAEI,GAAGC,UAAUW,IAAIH,CAAQ,EAGrCf,EAAKiB,EAAIE,MAAM,EAAEC,KAAK,EAAEpB,GAGxBqB,EAAUJ,EAAIK,KAAK,EAGzB,GAAM,mBAAoBD,EAA1B,CAKA,MAAMzC,EAAYD,EAAe0C,EAAQE,cAAc,EAEvD,GAAsB,MAAlB3C,EAAUM,KACV+B,EAAIpC,QAAQD,EAAUE,cAAc,EAAEgD,MAAM,WACxC,MAAM7B,EAAS8B,KACTnC,EAASG,EAAoBC,EAAIC,CAAM,EAE7CA,EAAOyC,KAAK,EAAEC,OAAO,EAAEC,KAAK,EAAEC,KAAK,IAC/BlD,EAAUC,EAAQC,CAAC,CACvB,CAAC,CACL,CAAC,MACE,CAEH,MAAMiD,EAAe,WACNC,mBACP9B,EAAIpC,QAAQD,EAAUE,cAAc,EAAEkE,QAAQ,EAAEC,KAAK,CACzD,EAGJ/C,EAAEgD,QAAWtE,EAAUM,KAAb,IAAqB4D,EAAgB,IAC3C7B,EAAIpC,QAAQD,EAAUE,cAAc,EAAEgD,MAAM,WACxC,MAAM7B,EAAS8B,KACTnC,EAASG,EAAoBC,EAAIC,CAAM,EACvCkD,EAAalD,EAAO+C,QAAQ,EAE9BG,KAAcC,EACdA,EAAeD,GAAY9D,QAAQ,IAC/BM,EAAUC,EAAQC,CAAC,CACvB,CAAC,EAEDwD,QAAQC,wBAAwBH,sBAA+B,CAEvE,CAAC,CACL,CAAC,CACL,CArCA,CAdA,CAoDJ,CAAC,CACJ,GAAEI,MAAM"}