{"version":3,"file":"sw-pleroma.js","mappings":";uEAAA,SACE,cAAiB,CACf,gBAAoBA,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gCAA+B,EACrH,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iBAAgB,EACpG,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAAU,EAC7F,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,0BAAyB,EAC1G,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,aAAY,EAChG,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EACpF,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gBAAe,+DCRtG,SACE,cAAiB,CACf,gBAAoBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,2CAA0C,EAChI,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,0BAAyB,EAC7G,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,2BAA0B,EAC7G,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,6BAA4B,EAC7G,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iBAAgB,EACpG,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAAU,EACrF,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,2BAA0B,EAC7G,YAAgBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,YAAW,EAC7F,sBAA0BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,wBAAuB,EACnH,eAAmBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iBAAgB,EACrG,aAAiBF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAAC,qBAAsBE,EAAaE,EAAM,KAAI,EACxK,MAAUN,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAAC,iCAAkCE,EAAaE,EAAM,KAAI,8DCbjL,SACE,cAAiB,CACf,gBAAoBN,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,kCAAiC,EACvH,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,8BAA6B,EACjH,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,oBAAmB,EACtG,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,0BAAyB,EAC1G,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,YAAW,EAC/F,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,SAAQ,EACnF,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,6BAA4B,EAC/G,sBAA0BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,wBAAuB,8DCTvH,SACE,cAAiB,CACf,gBAAoBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,uCAAsC,EAC5H,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gCAA+B,EACnH,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,aAAY,EAC/F,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,mCAAkC,EACnH,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,sBAAqB,EACzG,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,YAAW,EACtF,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,+BAA8B,EACjH,eAAmBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,qBAAoB,EACzG,YAAgBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gBAAe,EACjG,aAAiBF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAAC,iBAAkBE,EAAaE,EAAM,KAAI,EACpK,sBAA0BN,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iCAAgC,EAC5H,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,oCAAmC,+DCbnH,SACE,cAAiB,CACf,gBAAoBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,qCAAoC,EAC1H,MAAUF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAAC,iCAAkCE,EAAaE,EAAM,KAAI,EAC7K,cAAkBN,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,yBAAwB,EAC5G,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gBAAe,EAClG,eAAmBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,uBAAsB,EAC3G,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,4BAA2B,EAC5G,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iBAAgB,EACpG,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,SAAQ,EACnF,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,wBAAuB,EAC1G,sBAA0BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,yBAAwB,EACpH,YAAgBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,eAAc,EAChG,aAAiBF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAAC,gBAAiBE,EAAaE,EAAM,KAAI,EACnK,iBAAqBN,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,sBAAqB,EAC5G,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,kBAAiB,+DCftG,SACE,cAAiB,CACf,gBAAoBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iCAAgC,EACtH,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,qBAAoB,EACxG,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gBAAe,EAClG,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iCAAgC,EACjH,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAAU,EAC9F,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAAU,EACrF,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,uBAAsB,EACzG,sBAA0BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,wBAAuB,EACnH,aAAiBF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAAC,cAAeE,EAAaE,EAAM,KAAI,EACjK,YAAgBN,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,aAAY,EAC9F,eAAmBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,mBAAkB,EACvG,MAAUF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAAC,8BAA+BE,EAAaE,EAAM,KAAI,EAC1K,iBAAqBN,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,mBAAkB,EACzG,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,kBAAiB,+DCftG,SACE,cAAiB,CACf,gBAAoBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,mCAAkC,EACxH,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,sBAAqB,EACzG,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,qBAAoB,EACvG,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,kCAAiC,EAClH,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,kBAAiB,EACrG,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAAU,EACrF,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,qBAAoB,EACvG,sBAA0BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,6BAA4B,EACxH,aAAiBF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAAC,iBAAkBE,EAAaE,EAAM,KAAI,EACpK,YAAgBN,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,aAAY,EAC9F,eAAmBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,mBAAkB,EACvG,MAAUF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAAC,mCAAoCE,EAAaE,EAAM,KAAI,+DCbnL,SACE,cAAiB,CACf,aAAiBN,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,0BAAyB,EAC5G,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EAC7F,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,QAAO,EAClF,aAAiBF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAAC,aAAcE,EAAaE,EAAM,KAAI,EAChK,YAAgBN,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,SAAQ,EAC1F,sBAA0BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,yBAAwB,EACpH,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,4BAA2B,EAC9G,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,wBAAuB,EACxG,eAAmBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,uBAAsB,EAC3G,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,+BAA8B,EAClH,gBAAoBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,4BAA2B,+DCZrH,SACE,cAAiB,CACf,gBAAoBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,+BAA8B,EACpH,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,wBAAuB,EAC3G,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,uBAAsB,EACzG,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,oCAAmC,EACpH,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,kBAAiB,EACrG,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,eAAc,EACzF,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,4BAA2B,EAC9G,sBAA0BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gCAA+B,EAC3H,aAAiBF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAACE,EAAaE,EAAM,IAAK,0BAAyB,EAC5K,YAAgBN,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,kBAAiB,EACnG,eAAmBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,uBAAsB,EAC3G,MAAUF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAAC,uCAAwCE,EAAaE,EAAM,KAAI,+DCbvL,SACE,cAAiB,CACf,gBAAoBN,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,wBAAuB,EAC7G,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,uBAAsB,EAC1G,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gBAAe,EAClG,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,+BAA8B,EAC/G,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,eAAc,EAClG,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,QAAO,EAClF,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,mBAAkB,EACrG,sBAA0BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,0BAAyB,EACrH,aAAiBF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAAC,mBAAoBE,EAAaE,EAAM,KAAI,EACtK,YAAgBN,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,mBAAkB,EACpG,eAAmBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,wBAAuB,+DCZhH,SACE,cAAiB,CACf,gBAAoBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,wCAAuC,EAC7H,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,uBAAsB,EAC1G,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,aAAY,EAC/F,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,yCAAwC,EACzH,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iBAAgB,EACpG,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,QAAO,EAClF,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,0BAAyB,EAC5G,sBAA0BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,sCAAqC,EACjI,YAAgBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,aAAY,EAC9F,aAAiBF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAAC,gBAAiBE,EAAaE,EAAM,KAAI,EACnK,eAAmBN,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,oBAAmB,EACxG,MAAUF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAAC,4CAA6CE,EAAaE,EAAM,KAAI,EACxL,WAAeN,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,mBAAkB,EACnG,iBAAqBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,kBAAiB,+DCf5G,SACE,cAAiB,CACf,gBAAoBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gCAA+B,EACrH,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,uBAAsB,EAC1G,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAAU,EAC7F,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,0BAAyB,EAC1G,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EAC7F,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EACpF,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,kBAAiB,+DCRxG,SACE,cAAiB,CACf,gBAAoBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,yBAAwB,EAC9G,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,qBAAoB,EACxG,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,aAAY,EAC/F,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,oBAAmB,EACpG,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EAC7F,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,QAAO,EAClF,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,qBAAoB,EACvG,sBAA0BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iBAAgB,8DCThH,SACE,cAAiB,CACf,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,eAAc,EACjG,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,eAAc,EAClG,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,YAAW,+DCJ1F,SACE,cAAiB,CACf,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,YAAW,EAC9F,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,aAAY,EAChG,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EACpF,gBAAoBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,uCAAsC,EAC5H,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,cAAa,EACjG,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,+BAA8B,EAC/G,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iCAAgC,EACnH,eAAmBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,kBAAiB,EACtG,sBAA0BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,wBAAuB,EACnH,YAAgBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,mBAAkB,EACpG,aAAiBF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAAC,kBAAmBE,EAAaE,EAAM,KAAI,EACrK,MAAUN,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAAC,qCAAsCE,EAAaE,EAAM,KAAI,+DCbrL,SACE,cAAiB,CACf,gBAAoBN,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,0BAAyB,EAC/G,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,wBAAuB,EAC3G,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,aAAY,EAC/F,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,aAAY,EAC7F,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,OAAM,EAC1F,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,QAAO,EAClF,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,uBAAsB,EACzG,sBAA0BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,aAAY,8DCT5G,SACE,cAAiB,CACf,gBAAoBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,yBAAwB,EAC9G,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,wBAAuB,EAC3G,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,aAAY,EAC/F,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAAU,EAC3F,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,MAAK,EACzF,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,QAAO,EAClF,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,uBAAsB,EACzG,sBAA0BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,YAAW,EACvG,aAAiBF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAACE,EAAaE,EAAM,IAAK,gBAAe,EAClK,YAAgBN,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,kBAAiB,EACnG,eAAmBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iBAAgB,EACrG,MAAUF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAAC,iBAAkBE,EAAaE,EAAM,KAAI,+DCbjK,SACE,cAAiB,CACf,gBAAoBN,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,yBAAwB,EAC9G,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EAC7F,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,QAAO,EAC1F,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,cAAa,EAC9F,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,MAAK,EACzF,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,OAAM,EACjF,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,OAAM,EACzF,sBAA0BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,YAAW,EACvG,YAAgBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EAC3F,aAAiBF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAACE,EAAaE,EAAM,IAAK,aAAY,EAC/J,MAAUN,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAAC,eAAgBE,EAAaE,EAAM,KAAI,EAC3J,eAAmBN,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EAC9F,iBAAqBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,cAAa,EACpG,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,+DCf9F,SACE,cAAiB,CACf,gBAAoBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,mCAAkC,EACxH,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,oBAAmB,EACvG,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,cAAa,EAChG,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,sBAAqB,EACtG,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,cAAa,EACjG,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,QAAO,EAClF,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,sBAAqB,EACxG,sBAA0BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,6BAA4B,EACxH,eAAmBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,sBAAqB,8DCV9G,SACE,cAAiB,CACf,gBAAoBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,qCAAoC,EAC1H,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,wBAAuB,EAC3G,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,aAAY,EAC/F,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,0BAAyB,EAC1G,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,aAAY,EAChG,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,YAAW,EACtF,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,wBAAuB,EAC1G,sBAA0BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,uBAAsB,EAClH,YAAgBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,sBAAqB,EACvG,eAAmBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iBAAgB,EACrG,aAAiBF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAAC,iBAAkBE,EAAaE,EAAM,KAAI,EACpK,MAAUN,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAAC,mCAAoCE,EAAaE,EAAM,KAAI,EAC/K,WAAeN,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,wBAAuB,+DCd5G,SACE,cAAiB,CACf,gBAAoBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,0CAAyC,EAC/H,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,0BAAyB,EAC7G,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gBAAe,EAClG,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,yCAAwC,EACzH,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gBAAe,EACnG,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAAU,EACrF,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,4BAA2B,EAC9G,sBAA0BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,4BAA2B,+DCT3H,SACE,cAAiB,CACf,gBAAoBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,+BAA8B,EACpH,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,uCAAsC,EAC1H,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iBAAgB,EACnG,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iCAAgC,EACjH,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iBAAgB,EACpG,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gBAAe,EAC1F,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,6BAA4B,EAC/G,sBAA0BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,+BAA8B,EAC1H,YAAgBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,kBAAiB,EACnG,aAAiBF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAAC,gBAAiBE,EAAaE,EAAM,KAAI,EACnK,eAAmBN,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,0BAAyB,EAC9G,MAAUF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAAC,gCAAiCE,EAAaE,EAAM,KAAI,8DCbhL,SACE,cAAiB,CACf,gBAAoBN,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,wCAAuC,EAC7H,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,sBAAqB,EACzG,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,aAAY,EAC/F,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iCAAgC,EACjH,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gBAAe,EACnG,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,SAAQ,EACnF,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,wBAAuB,EAC1G,sBAA0BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,yBAAwB,EACpH,aAAiBF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAAC,cAAeE,EAAaE,EAAM,KAAI,EACjK,YAAgBN,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,eAAc,EAChG,eAAmBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,kBAAiB,EACtG,MAAUF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAAC,+BAAgCE,EAAaE,EAAM,KAAI,+DCb/K,SACE,cAAiB,CACf,aAAiBN,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gBAAe,EAClG,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,cAAa,EACjG,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,+DCJxF,SACE,cAAiB,CACf,gBAAoBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,6BAA4B,EAClH,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,uBAAsB,EAC1G,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,uBAAsB,EACzG,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gCAA+B,EAChH,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,eAAc,EAClG,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,YAAW,EACtF,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,0BAAyB,EAC5G,eAAmBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,oBAAmB,EACxG,aAAiBF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAAC,uBAAwBE,EAAaE,EAAM,KAAI,EAC1K,YAAgBN,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,cAAa,EAC/F,sBAA0BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,8BAA6B,EACzH,MAAUF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAAC,sCAAuCE,EAAaE,EAAM,KAAI,+DCbtL,SACE,cAAiB,CACf,gBAAoBN,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,kCAAiC,EACvH,MAAUF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAAC,gCAAiCE,EAAaE,EAAM,KAAI,EAC5K,cAAkBN,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,2BAA0B,EAC9G,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gBAAe,EAClG,eAAmBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,sBAAqB,EAC1G,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,8BAA6B,EAC9G,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,eAAc,EAClG,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,cAAa,EACxF,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,0BAAyB,EAC5G,sBAA0BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,6BAA4B,EACxH,YAAgBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,qBAAoB,EACtG,aAAiBF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAAC,uBAAwBE,EAAaE,EAAM,KAAI,+DCb9K,SACE,cAAiB,CAEjB,8DCHF,SACE,cAAiB,CACf,gBAAoBN,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gBAAe,EACrG,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAAU,EAC9F,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,QAAO,EAC1F,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAAU,EAC3F,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,MAAK,EACzF,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,OAAM,EACjF,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAAU,EAC7F,sBAA0BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAAU,EACtG,aAAiBF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAAC,OAAQE,EAAaE,EAAM,IAAK,QAAO,EAClK,YAAgBN,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,QAAO,EACzF,eAAmBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,SAAQ,EAC7F,MAAUF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAAC,aAAcE,EAAaE,EAAM,KAAI,EACzJ,WAAeN,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,SAAQ,2BCC7F,IAAIK,EAAkB,UAOtBC,EAAOC,QAUP,SAAoBC,GAClB,IAOIC,EAPAC,EAAM,GAAKF,EACXG,EAAQN,EAAgBO,KAAKF,GAEjC,IAAKC,EACH,OAAOD,EAIT,IAAIG,EAAO,GACPC,EAAQ,EACRC,EAAY,EAEhB,IAAKD,EAAQH,EAAMG,MAAOA,EAAQJ,EAAIM,OAAQF,IAAS,CACrD,OAAQJ,EAAIO,WAAWH,IACrB,KAAK,GACHL,EAAS,SACT,MACF,KAAK,GACHA,EAAS,QACT,MACF,KAAK,GACHA,EAAS,QACT,MACF,KAAK,GACHA,EAAS,OACT,MACF,KAAK,GACHA,EAAS,OACT,MACF,QACE,SAGAM,IAAcD,IAChBD,GAAQH,EAAIQ,UAAUH,EAAWD,IAGnCC,EAAYD,EAAQ,EACpBD,GAAQJ,CACV,CAEA,OAAOM,IAAcD,EACjBD,EAAOH,EAAIQ,UAAUH,EAAWD,GAChCD,CACN,uBCvEA,SAAUM,GAAuB,iBAAVZ,QAAoC,IAATD,EAAsBA,EAAOC,QAAQY,IAA4B,mBAATC,QAAqBA,OAAOC,IAAKD,OAAO,GAAGD,IAAiC,oBAATG,OAAwBA,OAA+B,oBAATC,OAAwBA,OAA6B,oBAAPC,KAAsBA,KAAYC,MAAOC,YAAcP,GAAK,CAArU,EAAuU,WAAqC,OAAO,SAAUQ,EAAEC,EAAEC,EAAEC,GAAG,SAASC,EAAEC,EAAEC,GAAG,IAAIJ,EAAEG,GAAG,CAAC,IAAIJ,EAAEI,GAAG,CAAC,IAAIE,EAAkB,mBAATC,SAAqBA,QAAQ,IAAIF,GAAGC,EAAE,OAAOA,EAAEF,GAAE,GAAI,GAAGI,EAAE,OAAOA,EAAEJ,GAAE,GAAI,IAAIb,EAAE,IAAIkB,MAAM,uBAAuBL,EAAE,KAAK,MAAOb,EAAEmB,KAAK,mBAAoBnB,CAAE,CAAC,IAAIoB,EAAEV,EAAEG,GAAG,CAACzB,QAAQ,CAAC,GAAGqB,EAAEI,GAAG,GAAGQ,KAAKD,EAAEhC,SAAQ,SAASoB,GAAoB,OAAOI,EAAlBH,EAAEI,GAAG,GAAGL,IAAgBA,EAAE,GAAEY,EAAEA,EAAEhC,QAAQoB,EAAEC,EAAEC,EAAEC,EAAE,CAAC,OAAOD,EAAEG,GAAGzB,OAAO,CAA2C,IAA1C,IAAI6B,EAAkB,mBAATD,SAAqBA,QAAgBH,EAAE,EAAEA,EAAEF,EAAEd,OAAOgB,IAAID,EAAED,EAAEE,IAAI,OAAOD,CAAE,CAA5b,CAA8b,CAAC,EAAE,CAAC,SAASU,EAAQnC,EAAOC,IAC70B,SAAWgB,GACX,aACA,IAEImB,EAyCAC,EA3CAC,EAAWrB,EAAOsB,kBAAoBtB,EAAOuB,uBAK/C,GAAIF,EAAU,CACZ,IAAIG,EAAS,EACTC,EAAW,IAAIJ,EAASK,GACxBC,EAAU3B,EAAO4B,SAASC,eAAe,IAC7CJ,EAASK,QAAQH,EAAS,CACxBI,eAAe,IAEjBZ,EAAgB,WACdQ,EAAQK,KAAQR,IAAWA,EAAS,CACtC,CACF,MAAO,GAAKxB,EAAOiC,mBAAiD,IAA1BjC,EAAOkC,eAO/Cf,EADS,aAAcnB,GAAU,uBAAwBA,EAAO4B,SAASO,cAAc,UACvE,WAId,IAAIC,EAAWpC,EAAO4B,SAASO,cAAc,UAC7CC,EAASC,mBAAqB,WAC5BX,IAEAU,EAASC,mBAAqB,KAC9BD,EAASE,WAAWC,YAAYH,GAChCA,EAAW,IACb,EACApC,EAAO4B,SAASY,gBAAgBC,YAAYL,EAC9C,EAEgB,WACdM,WAAWhB,EAAU,EACvB,MAxB+E,CAC/E,IAAIiB,EAAU,IAAI3C,EAAOkC,eACzBS,EAAQC,MAAMC,UAAYnB,EAC1BP,EAAgB,WACdwB,EAAQG,MAAMC,YAAY,EAC5B,CACF,CAuBF,IAAIC,EAAQ,GAEZ,SAAStB,IAEP,IAAIb,EAAGoC,EADP7B,GAAW,EAGX,IADA,IAAI8B,EAAMF,EAAMvD,OACTyD,GAAK,CAIV,IAHAD,EAAWD,EACXA,EAAQ,GACRnC,GAAK,IACIA,EAAIqC,GACXD,EAASpC,KAEXqC,EAAMF,EAAMvD,MACd,CACA2B,GAAW,CACb,CAEArC,EAAOC,QACP,SAAmBmE,GACQ,IAArBH,EAAMI,KAAKD,IAAgB/B,GAC7BD,GAEJ,CAEC,GAAEF,KAAKf,KAAuB,oBAAXF,OAAyBA,OAAyB,oBAATC,KAAuBA,KAAyB,oBAAXF,OAAyBA,OAAS,CAAC,EACrI,EAAE,CAAC,GAAG,EAAE,CAAC,SAASmB,EAAQnC,EAAOC,GACjC,aACA,IAAIqE,EAAYnC,EAAQ,GAGxB,SAASoC,IAAY,CAErB,IAAIC,EAAW,CAAC,EAEZC,EAAW,CAAC,YACZC,EAAY,CAAC,aACbC,EAAU,CAAC,WAIf,SAASC,EAAQC,GACf,GAAwB,mBAAbA,EACT,MAAM,IAAIC,UAAU,+BAEtB3D,KAAK4D,MAAQJ,EACbxD,KAAK8C,MAAQ,GACb9C,KAAK6D,aAAU,EACXH,IAAaN,GACfU,EAAsB9D,KAAM0D,EAEhC,CAoBA,SAASK,EAAUC,EAASC,EAAaC,GACvClE,KAAKgE,QAAUA,EACY,mBAAhBC,IACTjE,KAAKiE,YAAcA,EACnBjE,KAAKmE,cAAgBnE,KAAKoE,oBAEF,mBAAfF,IACTlE,KAAKkE,WAAaA,EAClBlE,KAAKqE,aAAerE,KAAKsE,kBAE7B,CAcA,SAASC,EAAOP,EAASQ,EAAMC,GAC7BtB,GAAU,WACR,IAAIuB,EACJ,IACEA,EAAcF,EAAKC,EAGrB,CAFE,MAAOvE,GACP,OAAOmD,EAASsB,OAAOX,EAAS9D,EAClC,CACIwE,IAAgBV,EAClBX,EAASsB,OAAOX,EAAS,IAAIL,UAAU,uCAEvCN,EAASuB,QAAQZ,EAASU,EAE9B,GACF,CAiCA,SAASG,EAAQC,GAEf,IAAIC,EAAOD,GAAOA,EAAIC,KACtB,GAAID,IAAuB,iBAARA,GAAmC,mBAARA,IAAuC,mBAATC,EAC1E,OAAO,WACLA,EAAKC,MAAMF,EAAKG,UAClB,CAEJ,CAEA,SAASnB,EAAsB/D,EAAMmF,GAEnC,IAAI5D,GAAS,EACb,SAAS6D,EAAQV,GACXnD,IAGJA,GAAS,EACT+B,EAASsB,OAAO5E,EAAM0E,GACxB,CAEA,SAASW,EAAUX,GACbnD,IAGJA,GAAS,EACT+B,EAASuB,QAAQ7E,EAAM0E,GACzB,CAMA,IAAIY,EAASC,GAJb,WACEJ,EAASE,EAAWD,EACtB,IAGsB,UAAlBE,EAAOE,QACTJ,EAAQE,EAAOZ,MAEnB,CAEA,SAASa,EAASd,EAAMC,GACtB,IAAIe,EAAM,CAAC,EACX,IACEA,EAAIf,MAAQD,EAAKC,GACjBe,EAAID,OAAS,SAIf,CAHE,MAAOrF,GACPsF,EAAID,OAAS,QACbC,EAAIf,MAAQvE,CACd,CACA,OAAOsF,CACT,CAxJA3G,EAAOC,QAAU2E,EAcjBA,EAAQgC,UAAiB,MAAI,SAAUvB,GACrC,OAAOlE,KAAK+E,KAAK,KAAMb,EACzB,EACAT,EAAQgC,UAAUV,KAAO,SAAUd,EAAaC,GAC9C,GAA2B,mBAAhBD,GAA8BjE,KAAK4D,QAAUL,GAChC,mBAAfW,GAA6BlE,KAAK4D,QAAUN,EACnD,OAAOtD,KAET,IAAIgE,EAAU,IAAIhE,KAAK0F,YAAYtC,GAQnC,OAPIpD,KAAK4D,QAAUJ,EAEjBe,EAAOP,EADQhE,KAAK4D,QAAUL,EAAYU,EAAcC,EAC9BlE,KAAK6D,SAE/B7D,KAAK8C,MAAMI,KAAK,IAAIa,EAAUC,EAASC,EAAaC,IAG/CF,CACT,EAYAD,EAAU0B,UAAUtB,cAAgB,SAAUM,GAC5CpB,EAASuB,QAAQ5E,KAAKgE,QAASS,EACjC,EACAV,EAAU0B,UAAUrB,mBAAqB,SAAUK,GACjDF,EAAOvE,KAAKgE,QAAShE,KAAKiE,YAAaQ,EACzC,EACAV,EAAU0B,UAAUpB,aAAe,SAAUI,GAC3CpB,EAASsB,OAAO3E,KAAKgE,QAASS,EAChC,EACAV,EAAU0B,UAAUnB,kBAAoB,SAAUG,GAChDF,EAAOvE,KAAKgE,QAAShE,KAAKkE,WAAYO,EACxC,EAkBApB,EAASuB,QAAU,SAAU7E,EAAM0E,GACjC,IAAIY,EAASC,EAAST,EAASJ,GAC/B,GAAsB,UAAlBY,EAAOE,OACT,OAAOlC,EAASsB,OAAO5E,EAAMsF,EAAOZ,OAEtC,IAAIS,EAAWG,EAAOZ,MAEtB,GAAIS,EACFpB,EAAsB/D,EAAMmF,OACvB,CACLnF,EAAK6D,MAAQL,EACbxD,EAAK8D,QAAUY,EAGf,IAFA,IAAI9D,GAAK,EACLqC,EAAMjD,EAAK+C,MAAMvD,SACZoB,EAAIqC,GACXjD,EAAK+C,MAAMnC,GAAGwD,cAAcM,EAEhC,CACA,OAAO1E,CACT,EACAsD,EAASsB,OAAS,SAAU5E,EAAM4F,GAChC5F,EAAK6D,MAAQN,EACbvD,EAAK8D,QAAU8B,EAGf,IAFA,IAAIhF,GAAK,EACLqC,EAAMjD,EAAK+C,MAAMvD,SACZoB,EAAIqC,GACXjD,EAAK+C,MAAMnC,GAAG0D,aAAasB,GAE7B,OAAO5F,CACT,EAqDA0D,EAAQmB,QACR,SAAiBH,GACf,OAAIA,aAAiBzE,KACZyE,EAEFpB,EAASuB,QAAQ,IAAI5E,KAAKoD,GAAWqB,EAC9C,EAEAhB,EAAQkB,OACR,SAAgBiB,GACd,IAAI5B,EAAU,IAAIhE,KAAKoD,GACvB,OAAOC,EAASsB,OAAOX,EAAS4B,EAClC,EAEAnC,EAAQoC,IACR,SAAaC,GACX,IAAI/F,EAAOC,KACX,GAAiD,mBAA7C+F,OAAON,UAAUO,SAASjF,KAAK+E,GACjC,OAAO9F,KAAK2E,OAAO,IAAIhB,UAAU,qBAGnC,IAAIX,EAAM8C,EAASvG,OACf+B,GAAS,EACb,IAAK0B,EACH,OAAOhD,KAAK4E,QAAQ,IAQtB,IALA,IAAIqB,EAAS,IAAIC,MAAMlD,GACnBmD,EAAW,EACXxF,GAAK,EACLqD,EAAU,IAAIhE,KAAKoD,KAEdzC,EAAIqC,GACXoD,EAAYN,EAASnF,GAAIA,GAE3B,OAAOqD,EACP,SAASoC,EAAY3B,EAAO9D,GAC1BZ,EAAK6E,QAAQH,GAAOM,MAMpB,SAAwBsB,GACtBJ,EAAOtF,GAAK0F,IACNF,IAAanD,GAAQ1B,IACzBA,GAAS,EACT+B,EAASuB,QAAQZ,EAASiC,GAE9B,IAZyC,SAAUN,GAC5CrE,IACHA,GAAS,EACT+B,EAASsB,OAAOX,EAAS2B,GAE7B,GAQF,CACF,EAEAlC,EAAQ6C,KACR,SAAcR,GAEZ,GAAiD,mBAA7CC,OAAON,UAAUO,SAASjF,KAAK+E,GACjC,OAAO9F,KAAK2E,OAAO,IAAIhB,UAAU,qBAGnC,IAAIX,EAAM8C,EAASvG,OACf+B,GAAS,EACb,IAAK0B,EACH,OAAOhD,KAAK4E,QAAQ,IAMtB,IAHA,IAOkBH,EAPd9D,GAAK,EACLqD,EAAU,IAAIhE,KAAKoD,KAEdzC,EAAIqC,GAIKyB,EAHPqB,EAASnF,GAfTX,KAmBJ4E,QAAQH,GAAOM,MAAK,SAAUwB,GAC5BjF,IACHA,GAAS,EACT+B,EAASuB,QAAQZ,EAASuC,GAE9B,IAAG,SAAUZ,GACNrE,IACHA,GAAS,EACT+B,EAASsB,OAAOX,EAAS2B,GAE7B,IAZF,OAAO3B,CAcT,CAEA,EAAE,CAAC,EAAI,IAAI,EAAE,CAAC,SAAShD,EAAQnC,EAAOC,IACtC,SAAWgB,GACX,aAC8B,mBAAnBA,EAAO2D,UAChB3D,EAAO2D,QAAUzC,EAAQ,GAG1B,GAAED,KAAKf,KAAuB,oBAAXF,OAAyBA,OAAyB,oBAATC,KAAuBA,KAAyB,oBAAXF,OAAyBA,OAAS,CAAC,EACrI,EAAE,CAAC,EAAI,IAAI,EAAE,CAAC,SAASmB,EAAQnC,EAAOC,GACtC,aAEA,IAAI0H,EAA4B,mBAAXC,QAAoD,iBAApBA,OAAOC,SAAwB,SAAU5B,GAAO,cAAcA,CAAK,EAAI,SAAUA,GAAO,OAAOA,GAAyB,mBAAX2B,QAAyB3B,EAAIY,cAAgBe,QAAU3B,IAAQ2B,OAAOhB,UAAY,gBAAkBX,CAAK,EA2BvQ6B,EAvBJ,WAEI,IACI,GAAyB,oBAAdC,UACP,OAAOA,UAEX,GAA+B,oBAApBC,gBACP,OAAOA,gBAEX,GAA4B,oBAAjBC,aACP,OAAOA,aAEX,GAA0B,oBAAfC,WACP,OAAOA,WAEX,GAA2B,oBAAhBC,YACP,OAAOA,WAIf,CAFE,MAAO9G,GACL,MACJ,CACJ,CAEU+G,GAwCV,SAASC,EAAWC,EAAOC,GAEvBD,EAAQA,GAAS,GACjBC,EAAaA,GAAc,CAAC,EAC5B,IACI,OAAO,IAAIC,KAAKF,EAAOC,EAW3B,CAVE,MAAOlH,GACL,GAAe,cAAXA,EAAEoH,KACF,MAAMpH,EAIV,IAFA,IACIqH,EAAU,IADuB,oBAAhBC,YAA8BA,YAAuC,oBAAlBC,cAAgCA,cAA0C,oBAAnBC,eAAiCA,eAAiBC,mBAExKhH,EAAI,EAAGA,EAAIwG,EAAM5H,OAAQoB,GAAK,EACnC4G,EAAQK,OAAOT,EAAMxG,IAEzB,OAAO4G,EAAQM,QAAQT,EAAWU,KACtC,CACJ,CAIuB,oBAAZrE,SAGPzC,EAAQ,GAEZ,IAAI+G,EAAYtE,QAEhB,SAASuE,EAAgBhE,EAASiE,GAC1BA,GACAjE,EAAQe,MAAK,SAAUM,GACnB4C,EAAS,KAAM5C,EACnB,IAAG,SAAUM,GACTsC,EAAStC,EACb,GAER,CAEA,SAASuC,EAAoBlE,EAASiE,EAAUE,GACpB,mBAAbF,GACPjE,EAAQe,KAAKkD,GAGY,mBAAlBE,GACPnE,EAAe,MAAEmE,EAEzB,CAEA,SAASC,EAAaC,GAOlB,MALmB,iBAARA,IACPC,QAAQC,KAAKF,EAAM,2CACnBA,EAAMG,OAAOH,IAGVA,CACX,CAEA,SAASI,IACL,GAAIxD,UAAU1F,QAAqD,mBAApC0F,UAAUA,UAAU1F,OAAS,GACxD,OAAO0F,UAAUA,UAAU1F,OAAS,EAE5C,CAKA,IAAImJ,EAA4B,mCAC5BC,OAAgB,EAChBC,EAAa,CAAC,EACd5C,EAAWD,OAAON,UAAUO,SAG5B6C,EAAY,WACZC,EAAa,YAoEjB,SAASC,EAAgBC,GACrB,IAAIC,EAAYL,EAAWI,EAAO1B,MAG9B4B,EAAoB,CAAC,EAEzBA,EAAkBlF,QAAU,IAAI+D,GAAU,SAAUnD,EAASD,GACzDuE,EAAkBtE,QAAUA,EAC5BsE,EAAkBvE,OAASA,CAC/B,IAGAsE,EAAUE,mBAAmBjG,KAAKgG,GAG7BD,EAAUG,QAGXH,EAAUG,QAAUH,EAAUG,QAAQrE,MAAK,WACvC,OAAOmE,EAAkBlF,OAC7B,IAJAiF,EAAUG,QAAUF,EAAkBlF,OAM9C,CAEA,SAASqF,EAAkBL,GACvB,IAGIE,EAHYN,EAAWI,EAAO1B,MAGA6B,mBAAmBG,MAIrD,GAAIJ,EAEA,OADAA,EAAkBtE,UACXsE,EAAkBlF,OAEjC,CAEA,SAASuF,EAAiBP,EAAQQ,GAC9B,IAGIN,EAHYN,EAAWI,EAAO1B,MAGA6B,mBAAmBG,MAIrD,GAAIJ,EAEA,OADAA,EAAkBvE,OAAO6E,GAClBN,EAAkBlF,OAEjC,CAEA,SAASyF,EAAeT,EAAQU,GAC5B,OAAO,IAAI3B,GAAU,SAAUnD,EAASD,GAGpC,GAFAiE,EAAWI,EAAO1B,MAAQsB,EAAWI,EAAO1B,OA6NzC,CAEHqC,QAAS,GAETC,GAAI,KAEJR,QAAS,KAETD,mBAAoB,IAnOhBH,EAAOY,GAAI,CACX,IAAIF,EAIA,OAAO9E,EAAQoE,EAAOY,IAHtBb,EAAgBC,GAChBA,EAAOY,GAAGC,OAIlB,CAEA,IAAIC,EAAS,CAACd,EAAO1B,MAEjBoC,GACAI,EAAO5G,KAAK8F,EAAOe,SAGvB,IAAIC,EAAUrD,EAAIsD,KAAKjF,MAAM2B,EAAKmD,GAE9BJ,IACAM,EAAQE,gBAAkB,SAAUhK,GAChC,IAAI0J,EAAKI,EAAQ3E,OACjB,IACIuE,EAAGO,kBAAkBnB,EAAOoB,WACxBlK,EAAEmK,YAAc,GAEhBT,EAAGO,kBAAkBzB,EAQ7B,CANE,MAAO4B,GACL,GAAgB,oBAAZA,EAAGhD,KAGH,MAAMgD,EAFNhC,QAAQC,KAAK,iBAAmBS,EAAO1B,KAA1B,oCAA4EpH,EAAEmK,WAAa,eAAiBnK,EAAEqK,WAAa,sBAAwBvB,EAAOoB,UAAY,oBAI3L,CACJ,GAGJJ,EAAQQ,QAAU,SAAUtK,GACxBA,EAAEuK,iBACF9F,EAAOqF,EAAQrE,MACnB,EAEAqE,EAAQU,UAAY,WAChB,IAAId,EAAKI,EAAQ3E,OACjBuE,EAAGe,gBAAkB,SAAUzK,GAM3BA,EAAE0K,OAAOf,OACb,EACAjF,EAAQgF,GACRP,EAAkBL,EACtB,CACJ,GACJ,CAEA,SAAS6B,EAAuB7B,GAC5B,OAAOS,EAAeT,GAAQ,EAClC,CAEA,SAAS8B,EAAuB9B,GAC5B,OAAOS,EAAeT,GAAQ,EAClC,CAEA,SAAS+B,EAAiB/B,EAAQgC,GAC9B,IAAKhC,EAAOY,GACR,OAAO,EAGX,IAAIqB,GAAcjC,EAAOY,GAAGsB,iBAAiBC,SAASnC,EAAOoB,WACzDgB,EAAcpC,EAAOe,QAAUf,EAAOY,GAAGG,QACzCsB,EAAYrC,EAAOe,QAAUf,EAAOY,GAAGG,QAY3C,GAVIqB,IAGIpC,EAAOe,UAAYiB,GACnB1C,QAAQC,KAAK,iBAAmBS,EAAO1B,KAA1B,uCAA8E0B,EAAOY,GAAGG,QAAU,eAAiBf,EAAOe,QAAU,KAGrJf,EAAOe,QAAUf,EAAOY,GAAGG,SAG3BsB,GAAaJ,EAAY,CAIzB,GAAIA,EAAY,CACZ,IAAIK,EAAatC,EAAOY,GAAGG,QAAU,EACjCuB,EAAatC,EAAOe,UACpBf,EAAOe,QAAUuB,EAEzB,CAEA,OAAO,CACX,CAEA,OAAO,CACX,CAoBA,SAASC,EAAYC,GAEjB,OAAOtE,EAAW,CA9OtB,SAAiCuE,GAI7B,IAHA,IAAIlM,EAASkM,EAAIlM,OACbmM,EAAM,IAAIC,YAAYpM,GACtBqM,EAAM,IAAIC,WAAWH,GAChB/K,EAAI,EAAGA,EAAIpB,EAAQoB,IACxBiL,EAAIjL,GAAK8K,EAAIjM,WAAWmB,GAE5B,OAAO+K,CACX,CAqOoBI,CAAwBC,KAAKP,EAAY1J,QAC1B,CAAEgG,KAAM0D,EAAY1D,MACvD,CAGA,SAASkE,EAAevH,GACpB,OAAOA,GAASA,EAAMwH,2BAC1B,CAMA,SAASC,EAAYjE,GACjB,IAAIlI,EAAOC,KAEPgE,EAAUjE,EAAKoM,aAAapH,MAAK,WACjC,IAAIkE,EAAYL,EAAW7I,EAAKqM,QAAQ9E,MAExC,GAAI2B,GAAaA,EAAUG,QACvB,OAAOH,EAAUG,OAEzB,IAGA,OADAlB,EAAoBlE,EAASiE,EAAUA,GAChCjE,CACX,CA0CA,SAASqI,EAAkBrD,EAAQsD,EAAMrE,EAAUsE,QAC/BC,IAAZD,IACAA,EAAU,GAGd,IACI,IAAIE,EAAKzD,EAAOY,GAAG8C,YAAY1D,EAAOoB,UAAWkC,GACjDrE,EAAS,KAAMwE,EAoBnB,CAnBE,MAAOjD,GACL,GAAI+C,EAAU,KAAOvD,EAAOY,IAAmB,sBAAbJ,EAAIlC,MAA6C,kBAAbkC,EAAIlC,MACtE,OAAOS,EAAUnD,UAAUG,MAAK,WAC5B,IAAKiE,EAAOY,IAAmB,kBAAbJ,EAAIlC,OAA6B0B,EAAOY,GAAGsB,iBAAiBC,SAASnC,EAAOoB,YAAcpB,EAAOe,SAAWf,EAAOY,GAAGG,QAMpI,OAJIf,EAAOY,KACPZ,EAAOe,QAAUf,EAAOY,GAAGG,QAAU,GAGlCe,EAAuB9B,EAEtC,IAAGjE,MAAK,WACJ,OAzDhB,SAAuBiE,GACnBD,EAAgBC,GAKhB,IAHA,IAAIC,EAAYL,EAAWI,EAAO1B,MAC9BqC,EAAUV,EAAUU,QAEfhJ,EAAI,EAAGA,EAAIgJ,EAAQpK,OAAQoB,IAAK,CACrC,IAAIgM,EAAShD,EAAQhJ,GACjBgM,EAAOP,QAAQxC,KACf+C,EAAOP,QAAQxC,GAAGC,QAClB8C,EAAOP,QAAQxC,GAAK,KAE5B,CAGA,OAFAZ,EAAOY,GAAK,KAELiB,EAAuB7B,GAAQjE,MAAK,SAAU6E,GAEjD,OADAZ,EAAOY,GAAKA,EACRmB,EAAiB/B,GAEV8B,EAAuB9B,GAE3BY,CACX,IAAG7E,MAAK,SAAU6E,GAGdZ,EAAOY,GAAKX,EAAUW,GAAKA,EAC3B,IAAK,IAAIjJ,EAAI,EAAGA,EAAIgJ,EAAQpK,OAAQoB,IAChCgJ,EAAQhJ,GAAGyL,QAAQxC,GAAKA,CAEhC,IAAU,OAAE,SAAUJ,GAElB,MADAD,EAAiBP,EAAQQ,GACnBA,CACV,GACJ,CAwBuBoD,CAAc5D,GAAQjE,MAAK,WAC9BsH,EAAkBrD,EAAQsD,EAAMrE,EAAUsE,EAAU,EACxD,GACJ,IAAU,MAAEtE,GAGhBA,EAASuB,EACb,CACJ,CA6lBA,IAAIqD,EAAe,CACfC,QAAS,eACTC,aA9kBJ,SAAsBC,GAClB,IAAIjN,EAAOC,KACPgJ,EAAS,CACTY,GAAI,MAGR,GAAIoD,EACA,IAAK,IAAIrM,KAAKqM,EACVhE,EAAOrI,GAAKqM,EAAQrM,GAK5B,IAAIsI,EAAYL,EAAWI,EAAO1B,MAG7B2B,IACDA,EA/BG,CAEHU,QAAS,GAETC,GAAI,KAEJR,QAAS,KAETD,mBAAoB,IAyBpBP,EAAWI,EAAO1B,MAAQ2B,GAI9BA,EAAUU,QAAQzG,KAAKnD,GAGlBA,EAAKoM,aACNpM,EAAKoM,WAAapM,EAAKkN,MACvBlN,EAAKkN,MAAQf,GAIjB,IAAIgB,EAAe,GAEnB,SAASC,IAGL,OAAOpF,EAAUnD,SACrB,CAEA,IAAK,IAAIwI,EAAI,EAAGA,EAAInE,EAAUU,QAAQpK,OAAQ6N,IAAK,CAC/C,IAAIT,EAAS1D,EAAUU,QAAQyD,GAC3BT,IAAW5M,GAEXmN,EAAahK,KAAKyJ,EAAOR,aAAoB,MAAEgB,GAEvD,CAGA,IAAIxD,EAAUV,EAAUU,QAAQ0D,MAAM,GAItC,OAAOtF,EAAUlC,IAAIqH,GAAcnI,MAAK,WAGpC,OAFAiE,EAAOY,GAAKX,EAAUW,GAEfiB,EAAuB7B,EAClC,IAAGjE,MAAK,SAAU6E,GAEd,OADAZ,EAAOY,GAAKA,EACRmB,EAAiB/B,EAAQjJ,EAAKuN,eAAevD,SAEtCe,EAAuB9B,GAE3BY,CACX,IAAG7E,MAAK,SAAU6E,GACdZ,EAAOY,GAAKX,EAAUW,GAAKA,EAC3B7J,EAAKqM,QAAUpD,EAEf,IAAK,IAAIuE,EAAI,EAAGA,EAAI5D,EAAQpK,OAAQgO,IAAK,CACrC,IAAIZ,EAAShD,EAAQ4D,GACjBZ,IAAW5M,IAEX4M,EAAOP,QAAQxC,GAAKZ,EAAOY,GAC3B+C,EAAOP,QAAQrC,QAAUf,EAAOe,QAExC,CACJ,GACJ,EAkgBIyD,SApiCJ,WACI,IAGI,IAAK7G,IAAQA,EAAIsD,KACb,OAAO,EAMX,IAAIwD,EAAmC,oBAAjBC,cAAgC,4BAA4BC,KAAKC,UAAUC,aAAe,SAASF,KAAKC,UAAUC,aAAe,aAAaF,KAAKC,UAAUE,UAE/KC,EAA4B,mBAAVC,QAAsE,IAA9CA,MAAMhI,WAAWiI,QAAQ,gBAQvE,QAASR,GAAYM,IAAkC,oBAAdnH,WAKlB,oBAAhBsH,WAGX,CAFE,MAAOhO,GACL,OAAO,CACX,CACJ,CAsgCciO,GACVC,QAvdJ,SAAiB1H,EAAUuB,GACvB,IAAIlI,EAAOC,KAEPgE,EAAU,IAAI+D,GAAU,SAAUnD,EAASD,GAC3C5E,EAAKkN,QAAQlI,MAAK,WACdsH,EAAkBtM,EAAKqM,QAASvD,GAAW,SAAUW,EAAKkD,GACtD,GAAIlD,EACA,OAAO7E,EAAO6E,GAGlB,IACI,IACI6E,EADQ3B,EAAY4B,YAAYvO,EAAKqM,QAAQhC,WACjCmE,aACZC,EAAkB,EAEtBH,EAAI3D,UAAY,WACZ,IAAI+D,EAASJ,EAAIhJ,OAEjB,GAAIoJ,EAAQ,CACR,IAAIhK,EAAQgK,EAAOhK,MACfuH,EAAevH,KACfA,EAAQ8G,EAAY9G,IAExB,IAAIY,EAASqB,EAASjC,EAAOgK,EAAOpG,IAAKmG,UAK1B,IAAXnJ,EACAT,EAAQS,GAERoJ,EAAiB,UAEzB,MACI7J,GAER,EAEAyJ,EAAI7D,QAAU,WACV7F,EAAO0J,EAAI1I,MACf,CAGJ,CAFE,MAAOzF,GACLyE,EAAOzE,EACX,CACJ,GACJ,IAAU,MAAEyE,EAChB,IAIA,OAFAqD,EAAgBhE,EAASiE,GAElBjE,CACX,EAqaI0K,QAlgBJ,SAAiBrG,EAAKJ,GAClB,IAAIlI,EAAOC,KAEXqI,EAAMD,EAAaC,GAEnB,IAAIrE,EAAU,IAAI+D,GAAU,SAAUnD,EAASD,GAC3C5E,EAAKkN,QAAQlI,MAAK,WACdsH,EAAkBtM,EAAKqM,QAASvD,GAAW,SAAUW,EAAKkD,GACtD,GAAIlD,EACA,OAAO7E,EAAO6E,GAGlB,IACI,IACI6E,EADQ3B,EAAY4B,YAAYvO,EAAKqM,QAAQhC,WACjCuE,IAAItG,GAEpBgG,EAAI3D,UAAY,WACZ,IAAIjG,EAAQ4J,EAAIhJ,YACFmH,IAAV/H,IACAA,EAAQ,MAERuH,EAAevH,KACfA,EAAQ8G,EAAY9G,IAExBG,EAAQH,EACZ,EAEA4J,EAAI7D,QAAU,WACV7F,EAAO0J,EAAI1I,MACf,CAGJ,CAFE,MAAOzF,GACLyE,EAAOzE,EACX,CACJ,GACJ,IAAU,MAAEyE,EAChB,IAGA,OADAqD,EAAgBhE,EAASiE,GAClBjE,CACX,EA4dI4K,QApaJ,SAAiBvG,EAAK5D,EAAOwD,GACzB,IAAIlI,EAAOC,KAEXqI,EAAMD,EAAaC,GAEnB,IAAIrE,EAAU,IAAI+D,GAAU,SAAUnD,EAASD,GAC3C,IAAIqE,EACJjJ,EAAKkN,QAAQlI,MAAK,WAEd,OADAiE,EAASjJ,EAAKqM,QACe,kBAAzBpG,EAASjF,KAAK0D,GAle9B,SAA2BkC,GACvB,MAA6B,kBAAlBgC,EACAZ,EAAUnD,QAAQ+D,GA5BjC,SAAyChC,GACrC,OAAO,IAAIoB,GAAU,SAAUnD,GAC3B,IAAIiK,EAAMlI,EAAI+F,YAAYhE,EAA2BI,GACjDgG,EAAO5H,EAAW,CAAC,KACvB2H,EAAIP,YAAY5F,GAA2BqG,IAAID,EAAM,OAErDD,EAAIG,QAAU,SAAU9O,GAGpBA,EAAEuK,iBACFvK,EAAE+O,kBACFrK,GAAQ,EACZ,EAEAiK,EAAIK,WAAa,WACb,IAAIC,EAAgBvB,UAAUC,UAAU3O,MAAM,iBAC1CkQ,EAAcxB,UAAUC,UAAU3O,MAAM,UAG5C0F,EAAQwK,IAAgBD,GAAiBE,SAASF,EAAc,GAAI,KAAO,GAC/E,CACJ,IAAU,OAAE,WACR,OAAO,CACX,GACJ,CAMWG,CAAgC3I,GAAK5B,MAAK,SAAUN,GAEvD,OADAkE,EAAgBlE,CAEpB,GACJ,CA2duB8K,CAAkBvG,EAAOY,IAAI7E,MAAK,SAAUyK,GAC/C,OAAIA,EACO/K,GA7TVqK,EA+TkBrK,EA9T5B,IAAIsD,GAAU,SAAUnD,EAASD,GACpC,IAAI8K,EAAS,IAAIC,WACjBD,EAAOjF,QAAU7F,EACjB8K,EAAOE,UAAY,SAAUzP,GACzB,IAAI0P,EAASC,KAAK3P,EAAE0K,OAAOvF,QAAU,IACrCT,EAAQ,CACJqH,6BAA6B,EAC7BnK,KAAM8N,EACN9H,KAAMgH,EAAKhH,MAEnB,EACA2H,EAAOK,mBAAmBhB,EAC9B,KAbJ,IAAqBA,CAgUL,IAEGrK,CACX,IAAGM,MAAK,SAAUN,GACd4H,EAAkBtM,EAAKqM,QAAStD,GAAY,SAAUU,EAAKkD,GACvD,GAAIlD,EACA,OAAO7E,EAAO6E,GAGlB,IACI,IAAIuG,EAAQrD,EAAY4B,YAAYvO,EAAKqM,QAAQhC,WAMnC,OAAV3F,IACAA,OAAQ+H,GAGZ,IAAI6B,EAAM0B,EAAMhB,IAAItK,EAAO4D,GAE3BqE,EAAYwC,WAAa,gBAOP1C,IAAV/H,IACAA,EAAQ,MAGZG,EAAQH,EACZ,EACAiI,EAAYsC,QAAUtC,EAAYlC,QAAU,WACxC,IAAIhB,EAAM6E,EAAI1I,MAAQ0I,EAAI1I,MAAQ0I,EAAI3B,YAAY/G,MAClDhB,EAAO6E,EACX,CAGJ,CAFE,MAAOtJ,GACLyE,EAAOzE,EACX,CACJ,GACJ,IAAU,MAAEyE,EAChB,IAGA,OADAqD,EAAgBhE,EAASiE,GAClBjE,CACX,EAsWIgM,WApWJ,SAAoB3H,EAAKJ,GACrB,IAAIlI,EAAOC,KAEXqI,EAAMD,EAAaC,GAEnB,IAAIrE,EAAU,IAAI+D,GAAU,SAAUnD,EAASD,GAC3C5E,EAAKkN,QAAQlI,MAAK,WACdsH,EAAkBtM,EAAKqM,QAAStD,GAAY,SAAUU,EAAKkD,GACvD,GAAIlD,EACA,OAAO7E,EAAO6E,GAGlB,IACI,IAMI6E,EANQ3B,EAAY4B,YAAYvO,EAAKqM,QAAQhC,WAMzB,OAAE/B,GAC1BqE,EAAYwC,WAAa,WACrBtK,GACJ,EAEA8H,EAAYlC,QAAU,WAClB7F,EAAO0J,EAAI1I,MACf,EAIA+G,EAAYsC,QAAU,WAClB,IAAIxF,EAAM6E,EAAI1I,MAAQ0I,EAAI1I,MAAQ0I,EAAI3B,YAAY/G,MAClDhB,EAAO6E,EACX,CAGJ,CAFE,MAAOtJ,GACLyE,EAAOzE,EACX,CACJ,GACJ,IAAU,MAAEyE,EAChB,IAGA,OADAqD,EAAgBhE,EAASiE,GAClBjE,CACX,EA0TIiM,MAxTJ,SAAehI,GACX,IAAIlI,EAAOC,KAEPgE,EAAU,IAAI+D,GAAU,SAAUnD,EAASD,GAC3C5E,EAAKkN,QAAQlI,MAAK,WACdsH,EAAkBtM,EAAKqM,QAAStD,GAAY,SAAUU,EAAKkD,GACvD,GAAIlD,EACA,OAAO7E,EAAO6E,GAGlB,IACI,IACI6E,EADQ3B,EAAY4B,YAAYvO,EAAKqM,QAAQhC,WACjC6F,QAEhBvD,EAAYwC,WAAa,WACrBtK,GACJ,EAEA8H,EAAYsC,QAAUtC,EAAYlC,QAAU,WACxC,IAAIhB,EAAM6E,EAAI1I,MAAQ0I,EAAI1I,MAAQ0I,EAAI3B,YAAY/G,MAClDhB,EAAO6E,EACX,CAGJ,CAFE,MAAOtJ,GACLyE,EAAOzE,EACX,CACJ,GACJ,IAAU,MAAEyE,EAChB,IAGA,OADAqD,EAAgBhE,EAASiE,GAClBjE,CACX,EA0RIzE,OAxRJ,SAAgB0I,GACZ,IAAIlI,EAAOC,KAEPgE,EAAU,IAAI+D,GAAU,SAAUnD,EAASD,GAC3C5E,EAAKkN,QAAQlI,MAAK,WACdsH,EAAkBtM,EAAKqM,QAASvD,GAAW,SAAUW,EAAKkD,GACtD,GAAIlD,EACA,OAAO7E,EAAO6E,GAGlB,IACI,IACI6E,EADQ3B,EAAY4B,YAAYvO,EAAKqM,QAAQhC,WACjC8F,QAEhB7B,EAAI3D,UAAY,WACZ9F,EAAQyJ,EAAIhJ,OAChB,EAEAgJ,EAAI7D,QAAU,WACV7F,EAAO0J,EAAI1I,MACf,CAGJ,CAFE,MAAOzF,GACLyE,EAAOzE,EACX,CACJ,GACJ,IAAU,MAAEyE,EAChB,IAGA,OADAqD,EAAgBhE,EAASiE,GAClBjE,CACX,EA2PIqE,IAzPJ,SAAajI,EAAG6H,GACZ,IAAIlI,EAAOC,KAEPgE,EAAU,IAAI+D,GAAU,SAAUnD,EAASD,GACvCvE,EAAI,EACJwE,EAAQ,MAKZ7E,EAAKkN,QAAQlI,MAAK,WACdsH,EAAkBtM,EAAKqM,QAASvD,GAAW,SAAUW,EAAKkD,GACtD,GAAIlD,EACA,OAAO7E,EAAO6E,GAGlB,IACI,IAAIuG,EAAQrD,EAAY4B,YAAYvO,EAAKqM,QAAQhC,WAC7C+F,GAAW,EACX9B,EAAM0B,EAAMK,gBAEhB/B,EAAI3D,UAAY,WACZ,IAAI+D,EAASJ,EAAIhJ,OACZoJ,EAOK,IAANrO,GAKK+P,EAFLvL,EAAQ6J,EAAOpG,MAKX8H,GAAW,EACX1B,EAAO4B,QAAQjQ,IAdnBwE,EAAQ,KAoBhB,EAEAyJ,EAAI7D,QAAU,WACV7F,EAAO0J,EAAI1I,MACf,CAGJ,CAFE,MAAOzF,GACLyE,EAAOzE,EACX,CACJ,GACJ,IAAU,MAAEyE,EAChB,IAGA,OADAqD,EAAgBhE,EAASiE,GAClBjE,CACX,EA+LIsM,KA7LJ,SAAcrI,GACV,IAAIlI,EAAOC,KAEPgE,EAAU,IAAI+D,GAAU,SAAUnD,EAASD,GAC3C5E,EAAKkN,QAAQlI,MAAK,WACdsH,EAAkBtM,EAAKqM,QAASvD,GAAW,SAAUW,EAAKkD,GACtD,GAAIlD,EACA,OAAO7E,EAAO6E,GAGlB,IACI,IACI6E,EADQ3B,EAAY4B,YAAYvO,EAAKqM,QAAQhC,WACjCgG,gBACZE,EAAO,GAEXjC,EAAI3D,UAAY,WACZ,IAAI+D,EAASJ,EAAIhJ,OAEZoJ,GAKL6B,EAAKpN,KAAKuL,EAAOpG,KACjBoG,EAAiB,YALb7J,EAAQ0L,EAMhB,EAEAjC,EAAI7D,QAAU,WACV7F,EAAO0J,EAAI1I,MACf,CAGJ,CAFE,MAAOzF,GACLyE,EAAOzE,EACX,CACJ,GACJ,IAAU,MAAEyE,EAChB,IAGA,OADAqD,EAAgBhE,EAASiE,GAClBjE,CACX,EAuJIuM,aArJJ,SAAsBvD,EAAS/E,GAC3BA,EAAWQ,EAAYzD,MAAMhF,KAAMiF,WAEnC,IAAIuL,EAAgBxQ,KAAKyQ,UACzBzD,EAA6B,mBAAZA,GAA0BA,GAAW,CAAC,GAC1C1F,OACT0F,EAAQ1F,KAAO0F,EAAQ1F,MAAQkJ,EAAclJ,KAC7C0F,EAAQ5C,UAAY4C,EAAQ5C,WAAaoG,EAAcpG,WAG3D,IACIpG,EADAjE,EAAOC,KAEX,GAAKgN,EAAQ1F,KAEN,CACH,IAAIoJ,EAAc1D,EAAQ1F,OAASkJ,EAAclJ,MAAQvH,EAAKqM,QAAQxC,GAElE+G,EAAYD,EAAc3I,EAAUnD,QAAQ7E,EAAKqM,QAAQxC,IAAMiB,EAAuBmC,GAASjI,MAAK,SAAU6E,GAC9G,IAAIX,EAAYL,EAAWoE,EAAQ1F,MAC/BqC,EAAUV,EAAUU,QACxBV,EAAUW,GAAKA,EACf,IAAK,IAAIjJ,EAAI,EAAGA,EAAIgJ,EAAQpK,OAAQoB,IAChCgJ,EAAQhJ,GAAGyL,QAAQxC,GAAKA,EAE5B,OAAOA,CACX,IAqDI5F,EAnDCgJ,EAAQ5C,UAmDCuG,EAAU5L,MAAK,SAAU6E,GAC/B,GAAKA,EAAGsB,iBAAiBC,SAAS6B,EAAQ5C,WAA1C,CAIA,IAAIG,EAAaX,EAAGG,QAAU,EAE9BhB,EAAgBiE,GAEhB,IAAI/D,EAAYL,EAAWoE,EAAQ1F,MAC/BqC,EAAUV,EAAUU,QAExBC,EAAGC,QACH,IAAK,IAAIlJ,EAAI,EAAGA,EAAIgJ,EAAQpK,OAAQoB,IAAK,CACrC,IAAIgM,EAAShD,EAAQhJ,GACrBgM,EAAOP,QAAQxC,GAAK,KACpB+C,EAAOP,QAAQrC,QAAUQ,CAC7B,CAEA,IAAIqG,EAAoB,IAAI7I,GAAU,SAAUnD,EAASD,GACrD,IAAI0J,EAAM1H,EAAIsD,KAAK+C,EAAQ1F,KAAMiD,GAEjC8D,EAAI7D,QAAU,SAAUhB,GACX6E,EAAIhJ,OACVwE,QACHlF,EAAO6E,EACX,EAEA6E,EAAInE,gBAAkB,WACTmE,EAAIhJ,OACVwL,kBAAkB7D,EAAQ5C,UACjC,EAEAiE,EAAI3D,UAAY,WACZ,IAAId,EAAKyE,EAAIhJ,OACbuE,EAAGC,QACHjF,EAAQgF,EACZ,CACJ,IAEA,OAAOgH,EAAkB7L,MAAK,SAAU6E,GACpCX,EAAUW,GAAKA,EACf,IAAK,IAAIwD,EAAI,EAAGA,EAAIzD,EAAQpK,OAAQ6N,IAAK,CACrC,IAAI0D,EAAWnH,EAAQyD,GACvB0D,EAAS1E,QAAQxC,GAAKA,EACtBP,EAAkByH,EAAS1E,QAC/B,CACJ,IAAU,OAAE,SAAU5C,GAElB,MADCD,EAAiByD,EAASxD,IAAQzB,EAAUnD,WAAkB,OAAE,WAAa,IACxE4E,CACV,GA/CA,CAgDJ,IArGUmH,EAAU5L,MAAK,SAAU6E,GAC/Bb,EAAgBiE,GAEhB,IAAI/D,EAAYL,EAAWoE,EAAQ1F,MAC/BqC,EAAUV,EAAUU,QAExBC,EAAGC,QACH,IAAK,IAAIlJ,EAAI,EAAGA,EAAIgJ,EAAQpK,OAAQoB,IACnBgJ,EAAQhJ,GACdyL,QAAQxC,GAAK,KAGxB,IAAImH,EAAgB,IAAIhJ,GAAU,SAAUnD,EAASD,GACjD,IAAI0J,EAAM1H,EAAIqK,eAAehE,EAAQ1F,MAErC+G,EAAI7D,QAAU,WACV,IAAIZ,EAAKyE,EAAIhJ,OACTuE,GACAA,EAAGC,QAEPlF,EAAO0J,EAAI1I,MACf,EAEA0I,EAAI4C,UAAY,WAGZ3I,QAAQC,KAAK,sCAAwCyE,EAAQ1F,KAAO,0CACxE,EAEA+G,EAAI3D,UAAY,WACZ,IAAId,EAAKyE,EAAIhJ,OACTuE,GACAA,EAAGC,QAEPjF,EAAQgF,EACZ,CACJ,IAEA,OAAOmH,EAAchM,MAAK,SAAU6E,GAChCX,EAAUW,GAAKA,EACf,IAAK,IAAIjJ,EAAI,EAAGA,EAAIgJ,EAAQpK,OAAQoB,IAEhC0I,EADcM,EAAQhJ,GACIyL,QAElC,IAAU,OAAE,SAAU5C,GAElB,MADCD,EAAiByD,EAASxD,IAAQzB,EAAUnD,WAAkB,OAAE,WAAa,IACxE4E,CACV,GACJ,GAuDR,MAtHIxF,EAAU+D,EAAUpD,OAAO,qBAyH/B,OADAqD,EAAgBhE,EAASiE,GAClBjE,CACX,GAwBIkN,EAAa,mEAGbC,EAAyB,gCAEzBC,EAAoB,YACpBC,EAA2BD,EAAkB7R,OAG7C+R,EAAmB,OACnBC,EAAY,OACZC,EAAiB,OACjBC,EAAkB,OAClBC,EAAyB,OACzBC,EAAkB,OAClBC,EAAkB,OAClBC,EAAmB,OACnBC,EAAmB,OACnBC,EAAoB,OACpBC,EAAoB,OACpBC,EAAgCZ,EAA2BC,EAAiB/R,OAE5E2S,EAAanM,OAAON,UAAUO,SAElC,SAASmM,EAAeC,GAEpB,IAEIzR,EAEA0R,EAAUC,EAAUC,EAAUC,EAJ9BC,EAAyC,IAA1BL,EAAiB7S,OAChCyD,EAAMoP,EAAiB7S,OAEvBmT,EAAI,EAG8C,MAAlDN,EAAiBA,EAAiB7S,OAAS,KAC3CkT,IACsD,MAAlDL,EAAiBA,EAAiB7S,OAAS,IAC3CkT,KAIR,IAAIE,EAAS,IAAIhH,YAAY8G,GACzBG,EAAQ,IAAI/G,WAAW8G,GAE3B,IAAKhS,EAAI,EAAGA,EAAIqC,EAAKrC,GAAK,EACtB0R,EAAWnB,EAAWjD,QAAQmE,EAAiBzR,IAC/C2R,EAAWpB,EAAWjD,QAAQmE,EAAiBzR,EAAI,IACnD4R,EAAWrB,EAAWjD,QAAQmE,EAAiBzR,EAAI,IACnD6R,EAAWtB,EAAWjD,QAAQmE,EAAiBzR,EAAI,IAGnDiS,EAAMF,KAAOL,GAAY,EAAIC,GAAY,EACzCM,EAAMF,MAAmB,GAAXJ,IAAkB,EAAIC,GAAY,EAChDK,EAAMF,MAAmB,EAAXH,IAAiB,EAAe,GAAXC,EAEvC,OAAOG,CACX,CAIA,SAASE,EAAeF,GAEpB,IAEIhS,EAFAiS,EAAQ,IAAI/G,WAAW8G,GACvBG,EAAe,GAGnB,IAAKnS,EAAI,EAAGA,EAAIiS,EAAMrT,OAAQoB,GAAK,EAE/BmS,GAAgB5B,EAAW0B,EAAMjS,IAAM,GACvCmS,GAAgB5B,GAAuB,EAAX0B,EAAMjS,KAAW,EAAIiS,EAAMjS,EAAI,IAAM,GACjEmS,GAAgB5B,GAA2B,GAAf0B,EAAMjS,EAAI,KAAY,EAAIiS,EAAMjS,EAAI,IAAM,GACtEmS,GAAgB5B,EAA0B,GAAf0B,EAAMjS,EAAI,IASzC,OANIiS,EAAMrT,OAAS,GAAM,EACrBuT,EAAeA,EAAarT,UAAU,EAAGqT,EAAavT,OAAS,GAAK,IAC7DqT,EAAMrT,OAAS,GAAM,IAC5BuT,EAAeA,EAAarT,UAAU,EAAGqT,EAAavT,OAAS,GAAK,MAGjEuT,CACX,CAwIA,IAAIC,EAAwB,CACxBC,UApIJ,SAAmBvO,EAAOwD,GACtB,IAAIgL,EAAY,GAShB,GARIxO,IACAwO,EAAYf,EAAWnR,KAAK0D,IAO5BA,IAAwB,yBAAdwO,GAAwCxO,EAAMkO,QAA4C,yBAAlCT,EAAWnR,KAAK0D,EAAMkO,SAAqC,CAG7H,IAAIA,EACAO,EAAS9B,EAET3M,aAAiBkH,aACjBgH,EAASlO,EACTyO,GAAU5B,IAEVqB,EAASlO,EAAMkO,OAEG,uBAAdM,EACAC,GAAU1B,EACW,wBAAdyB,EACPC,GAAUzB,EACW,+BAAdwB,EACPC,GAAUxB,EACW,wBAAduB,EACPC,GAAUvB,EACW,yBAAdsB,EACPC,GAAUrB,EACW,wBAAdoB,EACPC,GAAUtB,EACW,yBAAdqB,EACPC,GAAUpB,EACW,0BAAdmB,EACPC,GAAUnB,EACW,0BAAdkB,EACPC,GAAUlB,EAEV/J,EAAS,IAAIrH,MAAM,wCAI3BqH,EAASiL,EAASL,EAAeF,GACrC,MAAO,GAAkB,kBAAdM,EAA+B,CAEtC,IAAIE,EAAa,IAAIzD,WAErByD,EAAWC,OAAS,WAEhB,IAAInU,EAtIO,uBAsIkBwF,EAAMqD,KAAO,IAAM+K,EAAe7S,KAAKqF,QAEpE4C,EAASmJ,gBAAgCnS,EAC7C,EAEAkU,EAAWE,kBAAkB5O,EACjC,MACI,IACIwD,EAASqL,KAAKC,UAAU9O,GAK5B,CAJE,MAAOvE,GACLoI,QAAQ3C,MAAM,8CAA+ClB,GAE7DwD,EAAS,KAAM/H,EACnB,CAER,EAkEIsT,YAxDJ,SAAqB/O,GAIjB,GAAIA,EAAMhF,UAAU,EAAG4R,KAA8BD,EACjD,OAAOkC,KAAKG,MAAMhP,GAMtB,IAGIiP,EAHAtB,EAAmB3N,EAAMhF,UAAUwS,GACnCnK,EAAOrD,EAAMhF,UAAU4R,EAA0BY,GAKrD,GAAInK,IAASyJ,GAAaJ,EAAuBxD,KAAKyE,GAAmB,CACrE,IAAIuB,EAAUvB,EAAiBlT,MAAMiS,GACrCuC,EAAWC,EAAQ,GACnBvB,EAAmBA,EAAiB3S,UAAUkU,EAAQ,GAAGpU,OAC7D,CACA,IAAIoT,EAASR,EAAeC,GAI5B,OAAQtK,GACJ,KAAKwJ,EACD,OAAOqB,EACX,KAAKpB,EACD,OAAOrK,EAAW,CAACyL,GAAS,CAAE7K,KAAM4L,IACxC,KAAKlC,EACD,OAAO,IAAIoC,UAAUjB,GACzB,KAAKlB,EACD,OAAO,IAAI5F,WAAW8G,GAC1B,KAAKjB,EACD,OAAO,IAAImC,kBAAkBlB,GACjC,KAAKhB,EACD,OAAO,IAAImC,WAAWnB,GAC1B,KAAKd,EACD,OAAO,IAAIkC,YAAYpB,GAC3B,KAAKf,EACD,OAAO,IAAIoC,WAAWrB,GAC1B,KAAKb,EACD,OAAO,IAAImC,YAAYtB,GAC3B,KAAKZ,EACD,OAAO,IAAImC,aAAavB,GAC5B,KAAKX,EACD,OAAO,IAAImC,aAAaxB,GAC5B,QACI,MAAM,IAAI/R,MAAM,gBAAkBkH,GAE9C,EAKIqK,eAAgBA,EAChBU,eAAgBA,GAapB,SAASuB,EAAcjU,EAAG6I,EAAQf,EAAUE,GACxChI,EAAEkU,WAAW,8BAAgCrL,EAAOoB,UAAvC,+CAAwG,GAAInC,EAAUE,EACvI,CAwCA,SAASmM,EAAcnU,EAAG6I,EAAQuL,EAAcC,EAAMvM,EAAUE,GAC5DhI,EAAEkU,WAAWE,EAAcC,EAAMvM,GAAU,SAAU9H,EAAGwF,GAChDA,EAAM9E,OAAS8E,EAAM8O,WACrBtU,EAAEkU,WAAW,iEAAuE,CAACrL,EAAOoB,YAAY,SAAUjK,EAAGuU,GAC5GA,EAAQC,KAAKpV,OAOd4I,EAAchI,EAAGwF,GAJjByO,EAAcjU,EAAG6I,GAAQ,WACrB7I,EAAEkU,WAAWE,EAAcC,EAAMvM,EAAUE,EAC/C,GAAGA,EAIX,GAAGA,GAEHA,EAAchI,EAAGwF,EAEzB,GAAGwC,EACP,CA4EA,SAASyM,EAASvM,EAAK5D,EAAOwD,EAAU4M,GACpC,IAAI9U,EAAOC,KAEXqI,EAAMD,EAAaC,GAEnB,IAAIrE,EAAU,IAAI+D,GAAU,SAAUnD,EAASD,GAC3C5E,EAAKkN,QAAQlI,MAAK,gBAIAyH,IAAV/H,IACAA,EAAQ,MAIZ,IAAIqQ,EAAgBrQ,EAEhBuE,EAASjJ,EAAKqM,QAClBpD,EAAO+L,WAAW/B,UAAUvO,GAAO,SAAUA,EAAOkB,GAC5CA,EACAhB,EAAOgB,GAEPqD,EAAOY,GAAG8C,aAAY,SAAUvM,GAC5BmU,EAAcnU,EAAG6I,EAAQ,0BAA4BA,EAAOoB,UAAnC,8BAAmF,CAAC/B,EAAK5D,IAAQ,WACtHG,EAAQkQ,EACZ,IAAG,SAAU3U,EAAGwF,GACZhB,EAAOgB,EACX,GACJ,IAAG,SAAUqP,GAGT,GAAIA,EAASnU,OAASmU,EAASC,UAAW,CAQtC,GAAIJ,EAAc,EAEd,YADAjQ,EAAQgQ,EAAS5P,MAAMjF,EAAM,CAACsI,EAAKyM,EAAe7M,EAAU4M,EAAc,KAG9ElQ,EAAOqQ,EACX,CACJ,GAER,GACJ,IAAU,MAAErQ,EAChB,IAGA,OADAqD,EAAgBhE,EAASiE,GAClBjE,CACX,CAkIA,SAASkR,EAAiBtL,GACtB,OAAO,IAAI7B,GAAU,SAAUnD,EAASD,GACpCiF,EAAG8C,aAAY,SAAUvM,GACrBA,EAAEkU,WAAW,8FAAoG,IAAI,SAAUlU,EAAGuU,GAG9H,IAFA,IAAIS,EAAa,GAERxU,EAAI,EAAGA,EAAI+T,EAAQC,KAAKpV,OAAQoB,IACrCwU,EAAWjS,KAAKwR,EAAQC,KAAKS,KAAKzU,GAAG2G,MAGzC1C,EAAQ,CACJgF,GAAIA,EACJuL,WAAYA,GAEpB,IAAG,SAAUhV,EAAGwF,GACZhB,EAAOgB,EACX,GACJ,IAAG,SAAUqP,GACTrQ,EAAOqQ,EACX,GACJ,GACJ,CAqEA,IAAIK,EAAgB,CAChBvI,QAAS,gBACTC,aArZJ,SAAwBC,GACpB,IAAIjN,EAAOC,KACPgJ,EAAS,CACTY,GAAI,MAGR,GAAIoD,EACA,IAAK,IAAIrM,KAAKqM,EACVhE,EAAOrI,GAA2B,iBAAfqM,EAAQrM,GAAkBqM,EAAQrM,GAAGqF,WAAagH,EAAQrM,GAIrF,IAAI2U,EAAgB,IAAIvN,GAAU,SAAUnD,EAASD,GAGjD,IACIqE,EAAOY,GAAK8D,aAAa1E,EAAO1B,KAAMkB,OAAOQ,EAAOe,SAAUf,EAAOuM,YAAavM,EAAOwM,KAG7F,CAFE,MAAOtV,GACL,OAAOyE,EAAOzE,EAClB,CAGA8I,EAAOY,GAAG8C,aAAY,SAAUvM,GAC5BiU,EAAcjU,EAAG6I,GAAQ,WACrBjJ,EAAKqM,QAAUpD,EACfpE,GACJ,IAAG,SAAUzE,EAAGwF,GACZhB,EAAOgB,EACX,GACJ,GAAGhB,EACP,IAGA,OADAqE,EAAO+L,WAAahC,EACbuC,CACX,EAoXI9H,SA1oB+B,mBAAjBE,aA2oBdU,QAjUJ,SAAmB1H,EAAUuB,GACzB,IAAIlI,EAAOC,KAEPgE,EAAU,IAAI+D,GAAU,SAAUnD,EAASD,GAC3C5E,EAAKkN,QAAQlI,MAAK,WACd,IAAIiE,EAASjJ,EAAKqM,QAElBpD,EAAOY,GAAG8C,aAAY,SAAUvM,GAC5BmU,EAAcnU,EAAG6I,EAAQ,iBAAmBA,EAAOoB,UAAW,IAAI,SAAUjK,EAAGuU,GAI3E,IAHA,IAAIC,EAAOD,EAAQC,KACfpV,EAASoV,EAAKpV,OAEToB,EAAI,EAAGA,EAAIpB,EAAQoB,IAAK,CAC7B,IAAIyU,EAAOT,EAAKS,KAAKzU,GACjB0E,EAAS+P,EAAK3Q,MAYlB,GARIY,IACAA,EAAS2D,EAAO+L,WAAWvB,YAAYnO,SAO5B,KAJfA,EAASqB,EAASrB,EAAQ+P,EAAK/M,IAAK1H,EAAI,IAMpC,YADAiE,EAAQS,EAGhB,CAEAT,GACJ,IAAG,SAAUzE,EAAGwF,GACZhB,EAAOgB,EACX,GACJ,GACJ,IAAU,MAAEhB,EAChB,IAGA,OADAqD,EAAgBhE,EAASiE,GAClBjE,CACX,EAwRI0K,QAhWJ,SAAmBrG,EAAKJ,GACpB,IAAIlI,EAAOC,KAEXqI,EAAMD,EAAaC,GAEnB,IAAIrE,EAAU,IAAI+D,GAAU,SAAUnD,EAASD,GAC3C5E,EAAKkN,QAAQlI,MAAK,WACd,IAAIiE,EAASjJ,EAAKqM,QAClBpD,EAAOY,GAAG8C,aAAY,SAAUvM,GAC5BmU,EAAcnU,EAAG6I,EAAQ,iBAAmBA,EAAOoB,UAAY,yBAA0B,CAAC/B,IAAM,SAAUlI,EAAGuU,GACzG,IAAIrP,EAASqP,EAAQC,KAAKpV,OAASmV,EAAQC,KAAKS,KAAK,GAAG3Q,MAAQ,KAI5DY,IACAA,EAAS2D,EAAO+L,WAAWvB,YAAYnO,IAG3CT,EAAQS,EACZ,IAAG,SAAUlF,EAAGwF,GACZhB,EAAOgB,EACX,GACJ,GACJ,IAAU,MAAEhB,EAChB,IAGA,OADAqD,EAAgBhE,EAASiE,GAClBjE,CACX,EAqUI4K,QAhOJ,SAAmBvG,EAAK5D,EAAOwD,GAC3B,OAAO2M,EAAS5P,MAAMhF,KAAM,CAACqI,EAAK5D,EAAOwD,EAAU,GACvD,EA+NI+H,WA7NJ,SAAsB3H,EAAKJ,GACvB,IAAIlI,EAAOC,KAEXqI,EAAMD,EAAaC,GAEnB,IAAIrE,EAAU,IAAI+D,GAAU,SAAUnD,EAASD,GAC3C5E,EAAKkN,QAAQlI,MAAK,WACd,IAAIiE,EAASjJ,EAAKqM,QAClBpD,EAAOY,GAAG8C,aAAY,SAAUvM,GAC5BmU,EAAcnU,EAAG6I,EAAQ,eAAiBA,EAAOoB,UAAY,iBAAkB,CAAC/B,IAAM,WAClFzD,GACJ,IAAG,SAAUzE,EAAGwF,GACZhB,EAAOgB,EACX,GACJ,GACJ,IAAU,MAAEhB,EAChB,IAGA,OADAqD,EAAgBhE,EAASiE,GAClBjE,CACX,EA0MIiM,MAtMJ,SAAiBhI,GACb,IAAIlI,EAAOC,KAEPgE,EAAU,IAAI+D,GAAU,SAAUnD,EAASD,GAC3C5E,EAAKkN,QAAQlI,MAAK,WACd,IAAIiE,EAASjJ,EAAKqM,QAClBpD,EAAOY,GAAG8C,aAAY,SAAUvM,GAC5BmU,EAAcnU,EAAG6I,EAAQ,eAAiBA,EAAOoB,UAAW,IAAI,WAC5DxF,GACJ,IAAG,SAAUzE,EAAGwF,GACZhB,EAAOgB,EACX,GACJ,GACJ,IAAU,MAAEhB,EAChB,IAGA,OADAqD,EAAgBhE,EAASiE,GAClBjE,CACX,EAqLIzE,OAjLJ,SAAkB0I,GACd,IAAIlI,EAAOC,KAEPgE,EAAU,IAAI+D,GAAU,SAAUnD,EAASD,GAC3C5E,EAAKkN,QAAQlI,MAAK,WACd,IAAIiE,EAASjJ,EAAKqM,QAClBpD,EAAOY,GAAG8C,aAAY,SAAUvM,GAE5BmU,EAAcnU,EAAG6I,EAAQ,+BAAiCA,EAAOoB,UAAW,IAAI,SAAUjK,EAAGuU,GACzF,IAAIrP,EAASqP,EAAQC,KAAKS,KAAK,GAAGK,EAClC7Q,EAAQS,EACZ,IAAG,SAAUlF,EAAGwF,GACZhB,EAAOgB,EACX,GACJ,GACJ,IAAU,MAAEhB,EAChB,IAGA,OADAqD,EAAgBhE,EAASiE,GAClBjE,CACX,EA8JIqE,IArJJ,SAAejI,EAAG6H,GACd,IAAIlI,EAAOC,KAEPgE,EAAU,IAAI+D,GAAU,SAAUnD,EAASD,GAC3C5E,EAAKkN,QAAQlI,MAAK,WACd,IAAIiE,EAASjJ,EAAKqM,QAClBpD,EAAOY,GAAG8C,aAAY,SAAUvM,GAC5BmU,EAAcnU,EAAG6I,EAAQ,mBAAqBA,EAAOoB,UAAY,wBAAyB,CAAChK,EAAI,IAAI,SAAUD,EAAGuU,GAC5G,IAAIrP,EAASqP,EAAQC,KAAKpV,OAASmV,EAAQC,KAAKS,KAAK,GAAG/M,IAAM,KAC9DzD,EAAQS,EACZ,IAAG,SAAUlF,EAAGwF,GACZhB,EAAOgB,EACX,GACJ,GACJ,IAAU,MAAEhB,EAChB,IAGA,OADAqD,EAAgBhE,EAASiE,GAClBjE,CACX,EAmIIsM,KAjIJ,SAAgBrI,GACZ,IAAIlI,EAAOC,KAEPgE,EAAU,IAAI+D,GAAU,SAAUnD,EAASD,GAC3C5E,EAAKkN,QAAQlI,MAAK,WACd,IAAIiE,EAASjJ,EAAKqM,QAClBpD,EAAOY,GAAG8C,aAAY,SAAUvM,GAC5BmU,EAAcnU,EAAG6I,EAAQ,mBAAqBA,EAAOoB,UAAW,IAAI,SAAUjK,EAAGuU,GAG7E,IAFA,IAAIpE,EAAO,GAEF3P,EAAI,EAAGA,EAAI+T,EAAQC,KAAKpV,OAAQoB,IACrC2P,EAAKpN,KAAKwR,EAAQC,KAAKS,KAAKzU,GAAG0H,KAGnCzD,EAAQ0L,EACZ,IAAG,SAAUnQ,EAAGwF,GACZhB,EAAOgB,EACX,GACJ,GACJ,IAAU,MAAEhB,EAChB,IAGA,OADAqD,EAAgBhE,EAASiE,GAClBjE,CACX,EA0GIuM,aA/EJ,SAAwBvD,EAAS/E,GAC7BA,EAAWQ,EAAYzD,MAAMhF,KAAMiF,WAEnC,IAAIuL,EAAgBxQ,KAAKyQ,UACzBzD,EAA6B,mBAAZA,GAA0BA,GAAW,CAAC,GAC1C1F,OACT0F,EAAQ1F,KAAO0F,EAAQ1F,MAAQkJ,EAAclJ,KAC7C0F,EAAQ5C,UAAY4C,EAAQ5C,WAAaoG,EAAcpG,WAG3D,IACIpG,EADAjE,EAAOC,KAsDX,OADAgI,EAhDIhE,EAHCgJ,EAAQ1F,KAGC,IAAIS,GAAU,SAAUnD,GAC9B,IAAIgF,EAGAA,EAFAoD,EAAQ1F,OAASkJ,EAAclJ,KAE1BvH,EAAKqM,QAAQxC,GAEb8D,aAAaV,EAAQ1F,KAAM,GAAI,GAAI,GAGvC0F,EAAQ5C,UAITxF,EAAQ,CACJgF,GAAIA,EACJuL,WAAY,CAACnI,EAAQ5C,aAJzBxF,EAAQsQ,EAAiBtL,GAOjC,IAAG7E,MAAK,SAAU2Q,GACd,OAAO,IAAI3N,GAAU,SAAUnD,EAASD,GACpC+Q,EAAc9L,GAAG8C,aAAY,SAAUvM,GACnC,SAASwV,EAAUvL,GACf,OAAO,IAAIrC,GAAU,SAAUnD,EAASD,GACpCxE,EAAEkU,WAAW,wBAA0BjK,EAAW,IAAI,WAClDxF,GACJ,IAAG,SAAUzE,EAAGwF,GACZhB,EAAOgB,EACX,GACJ,GACJ,CAGA,IADA,IAAIiQ,EAAa,GACRjV,EAAI,EAAGqC,EAAM0S,EAAcP,WAAW5V,OAAQoB,EAAIqC,EAAKrC,IAC5DiV,EAAW1S,KAAKyS,EAAUD,EAAcP,WAAWxU,KAGvDoH,EAAUlC,IAAI+P,GAAY7Q,MAAK,WAC3BH,GACJ,IAAU,OAAE,SAAU1E,GAClByE,EAAOzE,EACX,GACJ,IAAG,SAAU8U,GACTrQ,EAAOqQ,EACX,GACJ,GACJ,IA/CUjN,EAAUpD,OAAO,qBAkDNsD,GAClBjE,CACX,GA2BA,SAAS6R,GAAc7I,EAAS8I,GAC5B,IAAIC,EAAY/I,EAAQ1F,KAAO,IAK/B,OAHI0F,EAAQ5C,YAAc0L,EAAc1L,YACpC2L,GAAa/I,EAAQ5C,UAAY,KAE9B2L,CACX,CAkSA,IAAIC,GAAsB,CACtBlJ,QAAS,sBACTC,aA3QJ,SAAwBC,GACpB,IACIhE,EAAS,CAAC,EACd,GAAIgE,EACA,IAAK,IAAIrM,KAAKqM,EACVhE,EAAOrI,GAAKqM,EAAQrM,GAM5B,OAFAqI,EAAO+M,UAAYF,GAAc7I,EARtBhN,KAQoCsN,iBA/BnD,WACI,IAAI2I,EAAsB,4BAE1B,IAII,OAHAC,aAAatH,QAAQqH,GAAqB,GAC1CC,aAAalG,WAAWiG,IAEjB,CAGX,CAFE,MAAO/V,GACL,OAAO,CACX,CACJ,CAOYiW,IAA+BD,aAAa3W,OAAS,GAKlDS,KAcNoM,QAAUpD,EACfA,EAAO+L,WAAahC,EAEbhL,EAAUnD,WANNmD,EAAUpD,QAOzB,EAyPI6I,SAtTJ,WACI,IACI,MAA+B,oBAAjB0I,cAAgC,YAAaA,gBAEzDA,aAAatH,OAGnB,CAFE,MAAO1O,GACL,OAAO,CACX,CACJ,CA8SckW,GACVhI,QAxMJ,SAAmB1H,EAAUuB,GACzB,IAAIlI,EAAOC,KAEPgE,EAAUjE,EAAKkN,QAAQlI,MAAK,WAc5B,IAbA,IAAIiE,EAASjJ,EAAKqM,QACd2J,EAAY/M,EAAO+M,UACnBM,EAAkBN,EAAUxW,OAC5BA,EAAS2W,aAAa3W,OAQtBiP,EAAkB,EAEb7N,EAAI,EAAGA,EAAIpB,EAAQoB,IAAK,CAC7B,IAAI0H,EAAM6N,aAAa7N,IAAI1H,GAC3B,GAA+B,IAA3B0H,EAAI4F,QAAQ8H,GAAhB,CAGA,IAAItR,EAAQyR,aAAaxH,QAAQrG,GAYjC,GANI5D,IACAA,EAAQuE,EAAO+L,WAAWvB,YAAY/O,SAK5B,KAFdA,EAAQiC,EAASjC,EAAO4D,EAAI5I,UAAU4W,GAAkB7H,MAGpD,OAAO/J,CAdX,CAgBJ,CACJ,IAGA,OADAuD,EAAgBhE,EAASiE,GAClBjE,CACX,EA+JI0K,QAlOJ,SAAmBrG,EAAKJ,GACpB,IAAIlI,EAAOC,KAEXqI,EAAMD,EAAaC,GAEnB,IAAIrE,EAAUjE,EAAKkN,QAAQlI,MAAK,WAC5B,IAAIiE,EAASjJ,EAAKqM,QACd/G,EAAS6Q,aAAaxH,QAAQ1F,EAAO+M,UAAY1N,GAUrD,OAJIhD,IACAA,EAAS2D,EAAO+L,WAAWvB,YAAYnO,IAGpCA,CACX,IAGA,OADA2C,EAAgBhE,EAASiE,GAClBjE,CACX,EA6MI4K,QAnFJ,SAAmBvG,EAAK5D,EAAOwD,GAC3B,IAAIlI,EAAOC,KAEXqI,EAAMD,EAAaC,GAEnB,IAAIrE,EAAUjE,EAAKkN,QAAQlI,MAAK,gBAGdyH,IAAV/H,IACAA,EAAQ,MAIZ,IAAIqQ,EAAgBrQ,EAEpB,OAAO,IAAIsD,GAAU,SAAUnD,EAASD,GACpC,IAAIqE,EAASjJ,EAAKqM,QAClBpD,EAAO+L,WAAW/B,UAAUvO,GAAO,SAAUA,EAAOkB,GAChD,GAAIA,EACAhB,EAAOgB,QAEP,IACIuQ,aAAatH,QAAQ5F,EAAO+M,UAAY1N,EAAK5D,GAC7CG,EAAQkQ,EAQZ,CAPE,MAAO5U,GAGU,uBAAXA,EAAEoH,MAA4C,+BAAXpH,EAAEoH,MACrC3C,EAAOzE,GAEXyE,EAAOzE,EACX,CAER,GACJ,GACJ,IAGA,OADA8H,EAAgBhE,EAASiE,GAClBjE,CACX,EA6CIgM,WAtGJ,SAAsB3H,EAAKJ,GACvB,IAAIlI,EAAOC,KAEXqI,EAAMD,EAAaC,GAEnB,IAAIrE,EAAUjE,EAAKkN,QAAQlI,MAAK,WAC5B,IAAIiE,EAASjJ,EAAKqM,QAClB8J,aAAalG,WAAWhH,EAAO+M,UAAY1N,EAC/C,IAGA,OADAL,EAAgBhE,EAASiE,GAClBjE,CACX,EA2FIiM,MA1PJ,SAAiBhI,GACb,IAAIlI,EAAOC,KACPgE,EAAUjE,EAAKkN,QAAQlI,MAAK,WAG5B,IAFA,IAAIgR,EAAYhW,EAAKqM,QAAQ2J,UAEpBpV,EAAIuV,aAAa3W,OAAS,EAAGoB,GAAK,EAAGA,IAAK,CAC/C,IAAI0H,EAAM6N,aAAa7N,IAAI1H,GAEI,IAA3B0H,EAAI4F,QAAQ8H,IACZG,aAAalG,WAAW3H,EAEhC,CACJ,IAGA,OADAL,EAAgBhE,EAASiE,GAClBjE,CACX,EA2OIzE,OAnHJ,SAAkB0I,GACd,IACIjE,EADOhE,KACQsQ,OAAOvL,MAAK,SAAUuL,GACrC,OAAOA,EAAK/Q,MAChB,IAGA,OADAyI,EAAgBhE,EAASiE,GAClBjE,CACX,EA4GIqE,IAjKJ,SAAejI,EAAG6H,GACd,IAAIlI,EAAOC,KACPgE,EAAUjE,EAAKkN,QAAQlI,MAAK,WAC5B,IACIM,EADA2D,EAASjJ,EAAKqM,QAElB,IACI/G,EAAS6Q,aAAa7N,IAAIjI,EAG9B,CAFE,MAAOuF,GACLN,EAAS,IACb,CAOA,OAJIA,IACAA,EAASA,EAAO5F,UAAUuJ,EAAO+M,UAAUxW,SAGxC8F,CACX,IAGA,OADA2C,EAAgBhE,EAASiE,GAClBjE,CACX,EA6IIsM,KA3IJ,SAAgBrI,GACZ,IAAIlI,EAAOC,KACPgE,EAAUjE,EAAKkN,QAAQlI,MAAK,WAK5B,IAJA,IAAIiE,EAASjJ,EAAKqM,QACd7M,EAAS2W,aAAa3W,OACtB+Q,EAAO,GAEF3P,EAAI,EAAGA,EAAIpB,EAAQoB,IAAK,CAC7B,IAAI2V,EAAUJ,aAAa7N,IAAI1H,GACW,IAAtC2V,EAAQrI,QAAQjF,EAAO+M,YACvBzF,EAAKpN,KAAKoT,EAAQ7W,UAAUuJ,EAAO+M,UAAUxW,QAErD,CAEA,OAAO+Q,CACX,IAGA,OADAtI,EAAgBhE,EAASiE,GAClBjE,CACX,EAyHIuM,aAhDJ,SAAwBvD,EAAS/E,GAI7B,GAHAA,EAAWQ,EAAYzD,MAAMhF,KAAMiF,aAEnC+H,EAA6B,mBAAZA,GAA0BA,GAAW,CAAC,GAC1C1F,KAAM,CACf,IAAIkJ,EAAgBxQ,KAAKyQ,SACzBzD,EAAQ1F,KAAO0F,EAAQ1F,MAAQkJ,EAAclJ,KAC7C0F,EAAQ5C,UAAY4C,EAAQ5C,WAAaoG,EAAcpG,SAC3D,CAEA,IACIpG,EADAjE,EAAOC,KAuBX,OADAgI,EAjBIhE,EAHCgJ,EAAQ1F,KAGC,IAAIS,GAAU,SAAUnD,GACzBoI,EAAQ5C,UAGTxF,EAAQiR,GAAc7I,EAASjN,EAAKuN,iBAFpC1I,EAAQoI,EAAQ1F,KAAO,IAI/B,IAAGvC,MAAK,SAAUgR,GACd,IAAK,IAAIpV,EAAIuV,aAAa3W,OAAS,EAAGoB,GAAK,EAAGA,IAAK,CAC/C,IAAI0H,EAAM6N,aAAa7N,IAAI1H,GAEI,IAA3B0H,EAAI4F,QAAQ8H,IACZG,aAAalG,WAAW3H,EAEhC,CACJ,IAhBUN,EAAUpD,OAAO,qBAmBNsD,GAClBjE,CACX,GAqBIuS,GAAW,SAAkBC,EAAOC,GAGpC,IAFA,IAL+BC,EAAGC,EAK9B3T,EAAMwT,EAAMjX,OACZoB,EAAI,EACDA,EAAIqC,GAAK,CACZ,IAR2B0T,EAQbF,EAAM7V,OARUgW,EAQNF,IAPG,iBAANC,GAA+B,iBAANC,GAAkBC,MAAMF,IAAME,MAAMD,GAQ9E,OAAO,EAEXhW,GACJ,CAEA,OAAO,CACX,EAEIkW,GAAU3Q,MAAM2Q,SAAW,SAAUC,GACrC,MAA+C,mBAAxC/Q,OAAON,UAAUO,SAASjF,KAAK+V,EAC1C,EAIIC,GAAiB,CAAC,EAElBC,GAAgB,CAAC,EAEjBC,GAAiB,CACjBC,UAAWrK,EACXsK,OAAQ9B,EACR+B,aAAcpB,IAGdqB,GAAqB,CAACJ,GAAeC,UAAUpK,QAASmK,GAAeE,OAAOrK,QAASmK,GAAeG,aAAatK,SAEnHwK,GAAwB,CAAC,gBAEzBC,GAAiB,CAAC,QAAS,UAAW,UAAW,MAAO,OAAQ,SAAU,aAAc,WAAWC,OAAOF,IAE1GG,GAAgB,CAChBlC,YAAa,GACbmC,OAAQL,GAAmBhK,QAC3B/F,KAAM,cAGNkO,KAAM,QACNpL,UAAW,gBACXL,QAAS,GAGb,SAAS4N,GAAcC,EAAqBC,GACxCD,EAAoBC,GAAiB,WACjC,IAAIC,EAAQ7S,UACZ,OAAO2S,EAAoB3K,QAAQlI,MAAK,WACpC,OAAO6S,EAAoBC,GAAe7S,MAAM4S,EAAqBE,EACzE,GACJ,CACJ,CAEA,SAASC,KACL,IAAK,IAAIpX,EAAI,EAAGA,EAAIsE,UAAU1F,OAAQoB,IAAK,CACvC,IAAImW,EAAM7R,UAAUtE,GAEpB,GAAImW,EACA,IAAK,IAAIkB,KAAQlB,EACTA,EAAImB,eAAeD,KACfnB,GAAQC,EAAIkB,IACZ/S,UAAU,GAAG+S,GAAQlB,EAAIkB,GAAM3K,QAE/BpI,UAAU,GAAG+S,GAAQlB,EAAIkB,GAK7C,CAEA,OAAO/S,UAAU,EACrB,CAEA,IAAIiT,GAAc,WACd,SAASA,EAAYlL,GAGjB,IAAK,IAAImL,KAvnEjB,SAAyBC,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAI1U,UAAU,oCAAwC,CAqnEhJ2U,CAAgBtY,KAAMkY,GAEIjB,GACtB,GAAIA,GAAegB,eAAeE,GAAgB,CAC9C,IAAIT,EAAST,GAAekB,GACxBI,EAAab,EAAO5K,QACxB9M,KAAKmY,GAAiBI,EAEjBxB,GAAewB,IAIhBvY,KAAKwY,aAAad,EAE1B,CAGJ1X,KAAKsN,eAAiByK,GAAO,CAAC,EAAGN,IACjCzX,KAAKyY,QAAUV,GAAO,CAAC,EAAG/X,KAAKsN,eAAgBN,GAC/ChN,KAAK0Y,WAAa,KAClB1Y,KAAK2Y,YAAc,KACnB3Y,KAAK4Y,QAAS,EACd5Y,KAAKoM,QAAU,KAEfpM,KAAK6Y,+BACL7Y,KAAK8Y,UAAU9Y,KAAKyY,QAAQf,QAAe,OAAE,WAAa,GAC9D,CAyQA,OAjQAQ,EAAYzS,UAAUgL,OAAS,SAAgBzD,GAI3C,GAA0E,iBAAlD,IAAZA,EAA0B,YAAcxG,EAAQwG,IAAwB,CAGhF,GAAIhN,KAAK4Y,OACL,OAAO,IAAIhY,MAAM,wDAGrB,IAAK,IAAID,KAAKqM,EAAS,CAKnB,GAJU,cAANrM,IACAqM,EAAQrM,GAAKqM,EAAQrM,GAAGoY,QAAQ,MAAO,MAGjC,YAANpY,GAAyC,iBAAfqM,EAAQrM,GAClC,OAAO,IAAIC,MAAM,sCAGrBZ,KAAKyY,QAAQ9X,GAAKqM,EAAQrM,EAC9B,CAIA,QAAI,WAAYqM,KAAWA,EAAQ0K,QACxB1X,KAAK8Y,UAAU9Y,KAAKyY,QAAQf,OAI3C,CAAO,MAAuB,iBAAZ1K,EACPhN,KAAKyY,QAAQzL,GAEbhN,KAAKyY,OAEpB,EAMAP,EAAYzS,UAAU+S,aAAe,SAAsBQ,EAAc/Q,EAAUE,GAC/E,IAAInE,EAAU,IAAI+D,GAAU,SAAUnD,EAASD,GAC3C,IACI,IAAI4T,EAAaS,EAAalM,QAC1BmM,EAAkB,IAAIrY,MAAM,wFAIhC,IAAKoY,EAAalM,QAEd,YADAnI,EAAOsU,GAKX,IADA,IAAIC,EAAgB3B,GAAeC,OAAO,gBACjC7W,EAAI,EAAGqC,EAAMkW,EAAc3Z,OAAQoB,EAAIqC,EAAKrC,IAAK,CACtD,IAAIwY,EAAmBD,EAAcvY,GAKrC,KADkB4V,GAASe,GAAuB6B,IAC/BH,EAAaG,KAAgE,mBAAnCH,EAAaG,GAEtE,YADAxU,EAAOsU,EAGf,EAE8B,WAU1B,IATA,IAAIG,EAA8B,SAAqCC,GACnE,OAAO,WACH,IAAI1T,EAAQ,IAAI/E,MAAM,UAAYyY,EAAa,6CAC3CrV,EAAU+D,EAAUpD,OAAOgB,GAE/B,OADAqC,EAAgBhE,EAASiB,UAAUA,UAAU1F,OAAS,IAC/CyE,CACX,CACJ,EAESsV,EAAK,EAAGC,EAAOjC,GAAsB/X,OAAQ+Z,EAAKC,EAAMD,IAAM,CACnE,IAAIE,EAAuBlC,GAAsBgC,GAC5CN,EAAaQ,KACdR,EAAaQ,GAAwBJ,EAA4BI,GAEzE,CACJ,CAEAC,GAEA,IAAIC,EAAmB,SAA0BC,GACzC5C,GAAewB,IACfjQ,QAAQsR,KAAK,kCAAoCrB,GAErDxB,GAAewB,GAAcS,EAC7BhC,GAAcuB,GAAcoB,EAI5B/U,GACJ,EAEI,aAAcoU,EACVA,EAAaxL,UAA6C,mBAA1BwL,EAAaxL,SAC7CwL,EAAaxL,WAAWzI,KAAK2U,EAAkB/U,GAE/C+U,IAAmBV,EAAaxL,UAGpCkM,GAAiB,EAIzB,CAFE,MAAOxZ,GACLyE,EAAOzE,EACX,CACJ,IAGA,OADAgI,EAAoBlE,EAASiE,EAAUE,GAChCnE,CACX,EAEAkU,EAAYzS,UAAUiS,OAAS,WAC3B,OAAO1X,KAAK8M,SAAW,IAC3B,EAEAoL,EAAYzS,UAAUoU,UAAY,SAAmBtB,EAAYtQ,EAAUE,GACvE,IAAI2R,EAAmB/C,GAAewB,GAAcxQ,EAAUnD,QAAQmS,GAAewB,IAAexQ,EAAUpD,OAAO,IAAI/D,MAAM,sBAG/H,OADAsH,EAAoB4R,EAAkB7R,EAAUE,GACzC2R,CACX,EAEA5B,EAAYzS,UAAUsU,cAAgB,SAAuB9R,GACzD,IAAI+R,EAAoBjS,EAAUnD,QAAQmO,GAE1C,OADA7K,EAAoB8R,EAAmB/R,GAChC+R,CACX,EAEA9B,EAAYzS,UAAUwH,MAAQ,SAAehF,GACzC,IAAIlI,EAAOC,KAEPgE,EAAUjE,EAAK2Y,WAAW3T,MAAK,WAK/B,OAJoB,OAAhBhF,EAAK6Y,SACL7Y,EAAK6Y,OAAS7Y,EAAK4Y,eAGhB5Y,EAAK6Y,MAChB,IAGA,OADA1Q,EAAoBlE,EAASiE,EAAUA,GAChCjE,CACX,EAEAkU,EAAYzS,UAAUqT,UAAY,SAAmBmB,EAAShS,EAAUE,GACpE,IAAIpI,EAAOC,KAEN6W,GAAQoD,KACTA,EAAU,CAACA,IAGf,IAAIC,EAAmBla,KAAKma,qBAAqBF,GAEjD,SAASG,IACLra,EAAK0Y,QAAQf,OAAS3X,EAAK2X,QAC/B,CAEA,SAAS2C,EAAqB3C,GAK1B,OAJA3X,EAAKua,QAAQ5C,GACb0C,IAEAra,EAAK6Y,OAAS7Y,EAAKgN,aAAahN,EAAK0Y,SAC9B1Y,EAAK6Y,MAChB,CA8BA,IAAI2B,EAAuC,OAApBva,KAAK0Y,WAAsB1Y,KAAK0Y,WAAkB,OAAE,WACvE,OAAO3Q,EAAUnD,SACrB,IAAKmD,EAAUnD,UAqBf,OAnBA5E,KAAK0Y,WAAa6B,EAAiBxV,MAAK,WACpC,IAAIwT,EAAa2B,EAAiB,GAIlC,OAHAna,EAAKqM,QAAU,KACfrM,EAAK6Y,OAAS,KAEP7Y,EAAK8Z,UAAUtB,GAAYxT,MAAK,SAAU2S,GAC7C3X,EAAK+M,QAAU4K,EAAO5K,QACtBsN,IACAra,EAAK8Y,+BACL9Y,EAAK4Y,YAzCb,SAAoBuB,GAChB,OAAO,WACH,IAAIM,EAAqB,EAmBzB,OAjBA,SAASC,IACL,KAAOD,EAAqBN,EAAiB3a,QAAQ,CACjD,IAAIgZ,EAAa2B,EAAiBM,GAMlC,OALAA,IAEAza,EAAKqM,QAAU,KACfrM,EAAK6Y,OAAS,KAEP7Y,EAAK8Z,UAAUtB,GAAYxT,KAAKsV,GAA6B,MAAEI,EAC1E,CAEAL,IACA,IAAIzU,EAAQ,IAAI/E,MAAM,sCAEtB,OADAb,EAAK2Y,WAAa3Q,EAAUpD,OAAOgB,GAC5B5F,EAAK2Y,UAChB,CAEO+B,EACX,CACJ,CAkB2BC,CAAWR,EAClC,GACJ,IAAU,OAAE,WACRE,IACA,IAAIzU,EAAQ,IAAI/E,MAAM,sCAEtB,OADAb,EAAK2Y,WAAa3Q,EAAUpD,OAAOgB,GAC5B5F,EAAK2Y,UAChB,IAEAxQ,EAAoBlI,KAAK0Y,WAAYzQ,EAAUE,GACxCnI,KAAK0Y,UAChB,EAEAR,EAAYzS,UAAUkV,SAAW,SAAkBpC,GAC/C,QAASvB,GAAcuB,EAC3B,EAEAL,EAAYzS,UAAU6U,QAAU,SAAiBM,GAC7C7C,GAAO/X,KAAM4a,EACjB,EAEA1C,EAAYzS,UAAU0U,qBAAuB,SAA8BF,GAEvE,IADA,IAAIC,EAAmB,GACdvZ,EAAI,EAAGqC,EAAMiX,EAAQ1a,OAAQoB,EAAIqC,EAAKrC,IAAK,CAChD,IAAI4X,EAAa0B,EAAQtZ,GACrBX,KAAK2a,SAASpC,IACd2B,EAAiBhX,KAAKqV,EAE9B,CACA,OAAO2B,CACX,EAEAhC,EAAYzS,UAAUoT,6BAA+B,WAKjD,IAAK,IAAIlY,EAAI,EAAGqC,EAAMuU,GAAehY,OAAQoB,EAAIqC,EAAKrC,IAClDgX,GAAc3X,KAAMuX,GAAe5W,GAE3C,EAEAuX,EAAYzS,UAAUoV,eAAiB,SAAwB7N,GAC3D,OAAO,IAAIkL,EAAYlL,EAC3B,EAEOkL,CACX,CAtSkB,GA4Sd4C,GAAiB,IAAI5C,GAEzBrZ,EAAOC,QAAUgc,EAEjB,EAAE,CAAC,EAAI,KAAK,CAAC,EAAE,CAAC,GAxvFmW,CAwvF/V,EACpB,oBC/vFA,IAIIC,EAJY,EAAQ,IAITC,CAHJ,EAAQ,MAGY,YAE/Bnc,EAAOC,QAAUic,kBCNjB,IAAIE,EAAY,EAAQ,MACpBC,EAAa,EAAQ,KACrBC,EAAU,EAAQ,MAClBC,EAAU,EAAQ,MAClBC,EAAU,EAAQ,MAStB,SAASC,EAAKC,GACZ,IAAIlc,GAAS,EACTE,EAAoB,MAAXgc,EAAkB,EAAIA,EAAQhc,OAG3C,IADAS,KAAKiQ,UACI5Q,EAAQE,GAAQ,CACvB,IAAIic,EAAQD,EAAQlc,GACpBW,KAAKyb,IAAID,EAAM,GAAIA,EAAM,GAC3B,CACF,CAGAF,EAAK7V,UAAUwK,MAAQgL,EACvBK,EAAK7V,UAAkB,OAAIyV,EAC3BI,EAAK7V,UAAUkJ,IAAMwM,EACrBG,EAAK7V,UAAUiW,IAAMN,EACrBE,EAAK7V,UAAUgW,IAAMJ,EAErBxc,EAAOC,QAAUwc,kBC/BjB,IAAIK,EAAiB,EAAQ,MACzBC,EAAkB,EAAQ,MAC1BC,EAAe,EAAQ,MACvBC,EAAe,EAAQ,MACvBC,EAAe,EAAQ,MAS3B,SAASC,EAAUT,GACjB,IAAIlc,GAAS,EACTE,EAAoB,MAAXgc,EAAkB,EAAIA,EAAQhc,OAG3C,IADAS,KAAKiQ,UACI5Q,EAAQE,GAAQ,CACvB,IAAIic,EAAQD,EAAQlc,GACpBW,KAAKyb,IAAID,EAAM,GAAIA,EAAM,GAC3B,CACF,CAGAQ,EAAUvW,UAAUwK,MAAQ0L,EAC5BK,EAAUvW,UAAkB,OAAImW,EAChCI,EAAUvW,UAAUkJ,IAAMkN,EAC1BG,EAAUvW,UAAUiW,IAAMI,EAC1BE,EAAUvW,UAAUgW,IAAMM,EAE1Bld,EAAOC,QAAUkd,kBC/BjB,IAIIC,EAJY,EAAQ,IAIdjB,CAHC,EAAQ,MAGO,OAE1Bnc,EAAOC,QAAUmd,kBCNjB,IAAIC,EAAgB,EAAQ,MACxBC,EAAiB,EAAQ,MACzBC,EAAc,EAAQ,KACtBC,EAAc,EAAQ,MACtBC,EAAc,EAAQ,MAS1B,SAASC,EAAShB,GAChB,IAAIlc,GAAS,EACTE,EAAoB,MAAXgc,EAAkB,EAAIA,EAAQhc,OAG3C,IADAS,KAAKiQ,UACI5Q,EAAQE,GAAQ,CACvB,IAAIic,EAAQD,EAAQlc,GACpBW,KAAKyb,IAAID,EAAM,GAAIA,EAAM,GAC3B,CACF,CAGAe,EAAS9W,UAAUwK,MAAQiM,EAC3BK,EAAS9W,UAAkB,OAAI0W,EAC/BI,EAAS9W,UAAUkJ,IAAMyN,EACzBG,EAAS9W,UAAUiW,IAAMW,EACzBE,EAAS9W,UAAUgW,IAAMa,EAEzBzd,EAAOC,QAAUyd,kBC/BjB,IAII9Y,EAJY,EAAQ,IAIVuX,CAHH,EAAQ,MAGW,WAE9Bnc,EAAOC,QAAU2E,kBCNjB,IAII+Y,EAJY,EAAQ,IAIdxB,CAHC,EAAQ,MAGO,OAE1Bnc,EAAOC,QAAU0d,kBCNjB,IAAID,EAAW,EAAQ,MACnBE,EAAc,EAAQ,KACtBC,EAAc,EAAQ,MAU1B,SAASC,EAAS1W,GAChB,IAAI5G,GAAS,EACTE,EAAmB,MAAV0G,EAAiB,EAAIA,EAAO1G,OAGzC,IADAS,KAAK4c,SAAW,IAAIL,IACXld,EAAQE,GACfS,KAAK6c,IAAI5W,EAAO5G,GAEpB,CAGAsd,EAASlX,UAAUoX,IAAMF,EAASlX,UAAUvC,KAAOuZ,EACnDE,EAASlX,UAAUiW,IAAMgB,EAEzB7d,EAAOC,QAAU6d,kBC1BjB,IAAIX,EAAY,EAAQ,MACpBc,EAAa,EAAQ,MACrBC,EAAc,EAAQ,MACtBC,EAAW,EAAQ,MACnBC,EAAW,EAAQ,MACnBC,EAAW,EAAQ,MASvB,SAASC,EAAM5B,GACb,IAAIzZ,EAAO9B,KAAK4c,SAAW,IAAIZ,EAAUT,GACzCvb,KAAKwV,KAAO1T,EAAK0T,IACnB,CAGA2H,EAAM1X,UAAUwK,MAAQ6M,EACxBK,EAAM1X,UAAkB,OAAIsX,EAC5BI,EAAM1X,UAAUkJ,IAAMqO,EACtBG,EAAM1X,UAAUiW,IAAMuB,EACtBE,EAAM1X,UAAUgW,IAAMyB,EAEtBre,EAAOC,QAAUqe,kBC1BjB,IAGI1W,EAHO,EAAQ,MAGDA,OAElB5H,EAAOC,QAAU2H,kBCLjB,IAGIoF,EAHO,EAAQ,MAGGA,WAEtBhN,EAAOC,QAAU+M,iBCLjB,IAIIuR,EAJY,EAAQ,IAIVpC,CAHH,EAAQ,MAGW,WAE9Bnc,EAAOC,QAAUse,YCcjBve,EAAOC,QAVP,SAAe0F,EAAM6Y,EAAS7I,GAC5B,OAAQA,EAAKjV,QACX,KAAK,EAAG,OAAOiF,EAAKzD,KAAKsc,GACzB,KAAK,EAAG,OAAO7Y,EAAKzD,KAAKsc,EAAS7I,EAAK,IACvC,KAAK,EAAG,OAAOhQ,EAAKzD,KAAKsc,EAAS7I,EAAK,GAAIA,EAAK,IAChD,KAAK,EAAG,OAAOhQ,EAAKzD,KAAKsc,EAAS7I,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAE3D,OAAOhQ,EAAKQ,MAAMqY,EAAS7I,EAC7B,YCMA3V,EAAOC,QAfP,SAAqB0X,EAAO8G,GAM1B,IALA,IAAIje,GAAS,EACTE,EAAkB,MAATiX,EAAgB,EAAIA,EAAMjX,OACnCge,EAAW,EACXlY,EAAS,KAEJhG,EAAQE,GAAQ,CACvB,IAAIkF,EAAQ+R,EAAMnX,GACdie,EAAU7Y,EAAOpF,EAAOmX,KAC1BnR,EAAOkY,KAAc9Y,EAEzB,CACA,OAAOY,CACT,kBCtBA,IAAImY,EAAY,EAAQ,MACpBC,EAAc,EAAQ,MACtB5G,EAAU,EAAQ,MAClB6G,EAAW,EAAQ,MACnBC,EAAU,EAAQ,MAClBC,EAAe,EAAQ,MAMvB3F,EAHclS,OAAON,UAGQwS,eAqCjCpZ,EAAOC,QA3BP,SAAuB2F,EAAOoZ,GAC5B,IAAIC,EAAQjH,EAAQpS,GAChBsZ,GAASD,GAASL,EAAYhZ,GAC9BuZ,GAAUF,IAAUC,GAASL,EAASjZ,GACtCwZ,GAAUH,IAAUC,IAAUC,GAAUJ,EAAanZ,GACrDyZ,EAAcJ,GAASC,GAASC,GAAUC,EAC1C5Y,EAAS6Y,EAAcV,EAAU/Y,EAAMlF,OAAQiJ,QAAU,GACzDjJ,EAAS8F,EAAO9F,OAEpB,IAAK,IAAI8I,KAAO5D,GACToZ,IAAa5F,EAAelX,KAAK0D,EAAO4D,IACvC6V,IAEQ,UAAP7V,GAEC2V,IAAkB,UAAP3V,GAA0B,UAAPA,IAE9B4V,IAAkB,UAAP5V,GAA0B,cAAPA,GAA8B,cAAPA,IAEtDsV,EAAQtV,EAAK9I,KAElB8F,EAAOnC,KAAKmF,GAGhB,OAAOhD,CACT,YC1BAxG,EAAOC,QAXP,SAAkB0X,EAAO2H,GAKvB,IAJA,IAAI9e,GAAS,EACTE,EAAkB,MAATiX,EAAgB,EAAIA,EAAMjX,OACnC8F,EAASa,MAAM3G,KAEVF,EAAQE,GACf8F,EAAOhG,GAAS8e,EAAS3H,EAAMnX,GAAQA,EAAOmX,GAEhD,OAAOnR,CACT,YCCAxG,EAAOC,QAXP,SAAmB0X,EAAOvQ,GAKxB,IAJA,IAAI5G,GAAS,EACTE,EAAS0G,EAAO1G,OAChB6e,EAAS5H,EAAMjX,SAEVF,EAAQE,GACfiX,EAAM4H,EAAS/e,GAAS4G,EAAO5G,GAEjC,OAAOmX,CACT,YCKA3X,EAAOC,QAZP,SAAmB0X,EAAO8G,GAIxB,IAHA,IAAIje,GAAS,EACTE,EAAkB,MAATiX,EAAgB,EAAIA,EAAMjX,SAE9BF,EAAQE,GACf,GAAI+d,EAAU9G,EAAMnX,GAAQA,EAAOmX,GACjC,OAAO,EAGX,OAAO,CACT,kBCpBA,IAAI6H,EAAK,EAAQ,MAoBjBxf,EAAOC,QAVP,SAAsB0X,EAAOnO,GAE3B,IADA,IAAI9I,EAASiX,EAAMjX,OACZA,KACL,GAAI8e,EAAG7H,EAAMjX,GAAQ,GAAI8I,GACvB,OAAO9I,EAGX,OAAQ,CACV,kBClBA,IAAI+e,EAAa,EAAQ,MAWrBC,EAViB,EAAQ,KAUdC,CAAeF,GAE9Bzf,EAAOC,QAAUyf,iBCbjB,IAAIA,EAAW,EAAQ,MAoBvB1f,EAAOC,QAVP,SAAoB2f,EAAYnB,GAC9B,IAAIjY,EAAS,GAMb,OALAkZ,EAASE,GAAY,SAASha,EAAOpF,EAAOof,GACtCnB,EAAU7Y,EAAOpF,EAAOof,IAC1BpZ,EAAOnC,KAAKuB,EAEhB,IACOY,CACT,YCKAxG,EAAOC,QAZP,SAAuB0X,EAAO8G,EAAWoB,EAAWC,GAIlD,IAHA,IAAIpf,EAASiX,EAAMjX,OACfF,EAAQqf,GAAaC,EAAY,GAAK,GAElCA,EAAYtf,MAAYA,EAAQE,GACtC,GAAI+d,EAAU9G,EAAMnX,GAAQA,EAAOmX,GACjC,OAAOnX,EAGX,OAAQ,CACV,kBCrBA,IAAIuf,EAAY,EAAQ,MACpBC,EAAgB,EAAQ,MAoC5BhgB,EAAOC,QAvBP,SAASggB,EAAYtI,EAAOuI,EAAOzB,EAAW0B,EAAU3Z,GACtD,IAAIhG,GAAS,EACTE,EAASiX,EAAMjX,OAKnB,IAHA+d,IAAcA,EAAYuB,GAC1BxZ,IAAWA,EAAS,MAEXhG,EAAQE,GAAQ,CACvB,IAAIkF,EAAQ+R,EAAMnX,GACd0f,EAAQ,GAAKzB,EAAU7Y,GACrBsa,EAAQ,EAEVD,EAAYra,EAAOsa,EAAQ,EAAGzB,EAAW0B,EAAU3Z,GAEnDuZ,EAAUvZ,EAAQZ,GAEVua,IACV3Z,EAAOA,EAAO9F,QAAUkF,EAE5B,CACA,OAAOY,CACT,kBCnCA,IAaI4Z,EAbgB,EAAQ,KAadC,GAEdrgB,EAAOC,QAAUmgB,kBCfjB,IAAIA,EAAU,EAAQ,MAClB3O,EAAO,EAAQ,MAcnBzR,EAAOC,QAJP,SAAoBqgB,EAAQhB,GAC1B,OAAOgB,GAAUF,EAAQE,EAAQhB,EAAU7N,EAC7C,kBCbA,IAAI8O,EAAW,EAAQ,MACnBC,EAAQ,EAAQ,KAsBpBxgB,EAAOC,QAZP,SAAiBqgB,EAAQG,GAMvB,IAHA,IAAIjgB,EAAQ,EACRE,GAHJ+f,EAAOF,EAASE,EAAMH,IAGJ5f,OAED,MAAV4f,GAAkB9f,EAAQE,GAC/B4f,EAASA,EAAOE,EAAMC,EAAKjgB,OAE7B,OAAQA,GAASA,GAASE,EAAU4f,OAAS3S,CAC/C,kBCrBA,IAAIoS,EAAY,EAAQ,MACpB/H,EAAU,EAAQ,MAkBtBhY,EAAOC,QALP,SAAwBqgB,EAAQI,EAAUC,GACxC,IAAIna,EAASka,EAASJ,GACtB,OAAOtI,EAAQsI,GAAU9Z,EAASuZ,EAAUvZ,EAAQma,EAAYL,GAClE,kBCjBA,IAAI1Y,EAAS,EAAQ,MACjBgZ,EAAY,EAAQ,MACpBC,EAAiB,EAAQ,MAOzBC,EAAiBlZ,EAASA,EAAOmZ,iBAAcpT,EAkBnD3N,EAAOC,QATP,SAAoB2F,GAClB,OAAa,MAATA,OACe+H,IAAV/H,EAdQ,qBADL,gBAiBJkb,GAAkBA,KAAkB5Z,OAAOtB,GAC/Cgb,EAAUhb,GACVib,EAAejb,EACrB,UCbA5F,EAAOC,QAJP,SAAmBqgB,EAAQ9W,GACzB,OAAiB,MAAV8W,GAAkB9W,KAAOtC,OAAOoZ,EACzC,kBCVA,IAAIU,EAAgB,EAAQ,MACxBC,EAAY,EAAQ,MACpBC,EAAgB,EAAQ,MAiB5BlhB,EAAOC,QANP,SAAqB0X,EAAO/R,EAAOia,GACjC,OAAOja,GAAUA,EACbsb,EAAcvJ,EAAO/R,EAAOia,GAC5BmB,EAAcrJ,EAAOsJ,EAAWpB,EACtC,kBCjBA,IAAIsB,EAAa,EAAQ,MACrBC,EAAe,EAAQ,MAgB3BphB,EAAOC,QAJP,SAAyB2F,GACvB,OAAOwb,EAAaxb,IAVR,sBAUkBub,EAAWvb,EAC3C,iBCfA,IAAIyb,EAAkB,EAAQ,MAC1BD,EAAe,EAAQ,MA0B3BphB,EAAOC,QAVP,SAASqhB,EAAY1b,EAAO2b,EAAOC,EAASC,EAAYC,GACtD,OAAI9b,IAAU2b,IAGD,MAAT3b,GAA0B,MAAT2b,IAAmBH,EAAaxb,KAAWwb,EAAaG,GACpE3b,GAAUA,GAAS2b,GAAUA,EAE/BF,EAAgBzb,EAAO2b,EAAOC,EAASC,EAAYH,EAAaI,GACzE,kBCzBA,IAAIpD,EAAQ,EAAQ,MAChBqD,EAAc,EAAQ,MACtBC,EAAa,EAAQ,MACrBC,EAAe,EAAQ,MACvBC,EAAS,EAAQ,MACjB9J,EAAU,EAAQ,MAClB6G,EAAW,EAAQ,MACnBE,EAAe,EAAQ,MAMvBgD,EAAU,qBACVC,EAAW,iBACXC,EAAY,kBAMZ7I,EAHclS,OAAON,UAGQwS,eA6DjCpZ,EAAOC,QA7CP,SAAyBqgB,EAAQiB,EAAOC,EAASC,EAAYS,EAAWR,GACtE,IAAIS,EAAWnK,EAAQsI,GACnB8B,EAAWpK,EAAQuJ,GACnBc,EAASF,EAAWH,EAAWF,EAAOxB,GACtCgC,EAASF,EAAWJ,EAAWF,EAAOP,GAKtCgB,GAHJF,EAASA,GAAUN,EAAUE,EAAYI,IAGhBJ,EACrBO,GAHJF,EAASA,GAAUP,EAAUE,EAAYK,IAGhBL,EACrBQ,EAAYJ,GAAUC,EAE1B,GAAIG,GAAa5D,EAASyB,GAAS,CACjC,IAAKzB,EAAS0C,GACZ,OAAO,EAETY,GAAW,EACXI,GAAW,CACb,CACA,GAAIE,IAAcF,EAEhB,OADAb,IAAUA,EAAQ,IAAIpD,GACd6D,GAAYpD,EAAauB,GAC7BqB,EAAYrB,EAAQiB,EAAOC,EAASC,EAAYS,EAAWR,GAC3DE,EAAWtB,EAAQiB,EAAOc,EAAQb,EAASC,EAAYS,EAAWR,GAExE,KArDyB,EAqDnBF,GAAiC,CACrC,IAAIkB,EAAeH,GAAYnJ,EAAelX,KAAKoe,EAAQ,eACvDqC,EAAeH,GAAYpJ,EAAelX,KAAKqf,EAAO,eAE1D,GAAImB,GAAgBC,EAAc,CAChC,IAAIC,EAAeF,EAAepC,EAAO1a,QAAU0a,EAC/CuC,EAAeF,EAAepB,EAAM3b,QAAU2b,EAGlD,OADAG,IAAUA,EAAQ,IAAIpD,GACf4D,EAAUU,EAAcC,EAAcrB,EAASC,EAAYC,EACpE,CACF,CACA,QAAKe,IAGLf,IAAUA,EAAQ,IAAIpD,GACfuD,EAAavB,EAAQiB,EAAOC,EAASC,EAAYS,EAAWR,GACrE,kBChFA,IAAIpD,EAAQ,EAAQ,MAChBgD,EAAc,EAAQ,KA4D1BthB,EAAOC,QA5CP,SAAqBqgB,EAAQwC,EAAQC,EAAWtB,GAC9C,IAAIjhB,EAAQuiB,EAAUriB,OAClBA,EAASF,EACTwiB,GAAgBvB,EAEpB,GAAc,MAAVnB,EACF,OAAQ5f,EAGV,IADA4f,EAASpZ,OAAOoZ,GACT9f,KAAS,CACd,IAAIyC,EAAO8f,EAAUviB,GACrB,GAAKwiB,GAAgB/f,EAAK,GAClBA,EAAK,KAAOqd,EAAOrd,EAAK,MACtBA,EAAK,KAAMqd,GAEnB,OAAO,CAEX,CACA,OAAS9f,EAAQE,GAAQ,CAEvB,IAAI8I,GADJvG,EAAO8f,EAAUviB,IACF,GACXyiB,EAAW3C,EAAO9W,GAClB0Z,EAAWjgB,EAAK,GAEpB,GAAI+f,GAAgB/f,EAAK,IACvB,QAAiB0K,IAAbsV,KAA4BzZ,KAAO8W,GACrC,OAAO,MAEJ,CACL,IAAIoB,EAAQ,IAAIpD,EAChB,GAAImD,EACF,IAAIjb,EAASib,EAAWwB,EAAUC,EAAU1Z,EAAK8W,EAAQwC,EAAQpB,GAEnE,UAAiB/T,IAAXnH,EACE8a,EAAY4B,EAAUD,EAAUE,EAA+C1B,EAAYC,GAC3Flb,GAEN,OAAO,CAEX,CACF,CACA,OAAO,CACT,YChDAxG,EAAOC,QAJP,SAAmB2F,GACjB,OAAOA,GAAUA,CACnB,kBCTA,IAAIwd,EAAa,EAAQ,MACrBC,EAAW,EAAQ,MACnBC,EAAW,EAAQ,MACnBC,EAAW,EAAQ,KASnBC,EAAe,8BAGfC,EAAYC,SAAS9c,UACrB+c,EAAczc,OAAON,UAGrBgd,EAAeH,EAAUtc,SAGzBiS,EAAiBuK,EAAYvK,eAG7ByK,EAAaC,OAAO,IACtBF,EAAa1hB,KAAKkX,GAAgBc,QAjBjB,sBAiBuC,QACvDA,QAAQ,yDAA0D,SAAW,KAmBhFla,EAAOC,QARP,SAAsB2F,GACpB,SAAK0d,EAAS1d,IAAUyd,EAASzd,MAGnBwd,EAAWxd,GAASie,EAAaL,GAChC1U,KAAKyU,EAAS3d,GAC/B,kBC5CA,IAAIub,EAAa,EAAQ,MACrB4C,EAAW,EAAQ,MACnB3C,EAAe,EAAQ,MA8BvB4C,EAAiB,CAAC,EACtBA,EAZiB,yBAYYA,EAXZ,yBAYjBA,EAXc,sBAWYA,EAVX,uBAWfA,EAVe,uBAUYA,EATZ,uBAUfA,EATsB,8BASYA,EARlB,wBAShBA,EARgB,yBAQY,EAC5BA,EAjCc,sBAiCYA,EAhCX,kBAiCfA,EApBqB,wBAoBYA,EAhCnB,oBAiCdA,EApBkB,qBAoBYA,EAhChB,iBAiCdA,EAhCe,kBAgCYA,EA/Bb,qBAgCdA,EA/Ba,gBA+BYA,EA9BT,mBA+BhBA,EA9BgB,mBA8BYA,EA7BZ,mBA8BhBA,EA7Ba,gBA6BYA,EA5BT,mBA6BhBA,EA5BiB,qBA4BY,EAc7BhkB,EAAOC,QALP,SAA0B2F,GACxB,OAAOwb,EAAaxb,IAClBme,EAASne,EAAMlF,WAAasjB,EAAe7C,EAAWvb,GAC1D,kBCzDA,IAAIqe,EAAc,EAAQ,MACtBC,EAAsB,EAAQ,MAC9BC,EAAW,EAAQ,MACnBnM,EAAU,EAAQ,MAClBoM,EAAW,EAAQ,MA0BvBpkB,EAAOC,QAjBP,SAAsB2F,GAGpB,MAAoB,mBAATA,EACFA,EAEI,MAATA,EACKue,EAEW,iBAATve,EACFoS,EAAQpS,GACXse,EAAoBte,EAAM,GAAIA,EAAM,IACpCqe,EAAYre,GAEXwe,EAASxe,EAClB,iBC5BA,IAAIye,EAAc,EAAQ,MACtBC,EAAa,EAAQ,MAMrBlL,EAHclS,OAAON,UAGQwS,eAsBjCpZ,EAAOC,QAbP,SAAkBqgB,GAChB,IAAK+D,EAAY/D,GACf,OAAOgE,EAAWhE,GAEpB,IAAI9Z,EAAS,GACb,IAAK,IAAIgD,KAAOtC,OAAOoZ,GACjBlH,EAAelX,KAAKoe,EAAQ9W,IAAe,eAAPA,GACtChD,EAAOnC,KAAKmF,GAGhB,OAAOhD,CACT,kBC3BA,IAAIkZ,EAAW,EAAQ,MACnB6E,EAAc,EAAQ,MAoB1BvkB,EAAOC,QAVP,SAAiB2f,EAAYN,GAC3B,IAAI9e,GAAS,EACTgG,EAAS+d,EAAY3E,GAAcvY,MAAMuY,EAAWlf,QAAU,GAKlE,OAHAgf,EAASE,GAAY,SAASha,EAAO4D,EAAKoW,GACxCpZ,IAAShG,GAAS8e,EAAS1Z,EAAO4D,EAAKoW,EACzC,IACOpZ,CACT,kBCnBA,IAAIge,EAAc,EAAQ,MACtBC,EAAe,EAAQ,MACvBC,EAA0B,EAAQ,MAmBtC1kB,EAAOC,QAVP,SAAqB6iB,GACnB,IAAIC,EAAY0B,EAAa3B,GAC7B,OAAwB,GAApBC,EAAUriB,QAAeqiB,EAAU,GAAG,GACjC2B,EAAwB3B,EAAU,GAAG,GAAIA,EAAU,GAAG,IAExD,SAASzC,GACd,OAAOA,IAAWwC,GAAU0B,EAAYlE,EAAQwC,EAAQC,EAC1D,CACF,kBCnBA,IAAIzB,EAAc,EAAQ,KACtBxR,EAAM,EAAQ,MACd6U,EAAQ,EAAQ,MAChBC,EAAQ,EAAQ,MAChBC,EAAqB,EAAQ,MAC7BH,EAA0B,EAAQ,MAClClE,EAAQ,EAAQ,KA0BpBxgB,EAAOC,QAZP,SAA6BwgB,EAAMyC,GACjC,OAAI0B,EAAMnE,IAASoE,EAAmB3B,GAC7BwB,EAAwBlE,EAAMC,GAAOyC,GAEvC,SAAS5C,GACd,IAAI2C,EAAWnT,EAAIwQ,EAAQG,GAC3B,YAAqB9S,IAAbsV,GAA0BA,IAAaC,EAC3CyB,EAAMrE,EAAQG,GACda,EAAY4B,EAAUD,EAAUE,EACtC,CACF,kBC9BA,IAAI2B,EAAW,EAAQ,MACnBC,EAAU,EAAQ,MAClBC,EAAe,EAAQ,MACvBC,EAAU,EAAQ,MAClBC,EAAa,EAAQ,MACrBC,EAAY,EAAQ,MACpBC,EAAkB,EAAQ,MAC1BjB,EAAW,EAAQ,MACnBnM,EAAU,EAAQ,MAwCtBhY,EAAOC,QA7BP,SAAqB2f,EAAYyF,EAAWC,GAExCD,EADEA,EAAU3kB,OACAokB,EAASO,GAAW,SAAS/F,GACvC,OAAItH,EAAQsH,GACH,SAAS1Z,GACd,OAAOmf,EAAQnf,EAA2B,IAApB0Z,EAAS5e,OAAe4e,EAAS,GAAKA,EAC9D,EAEKA,CACT,IAEY,CAAC6E,GAGf,IAAI3jB,GAAS,EACb6kB,EAAYP,EAASO,EAAWF,EAAUH,IAE1C,IAAIxe,EAASye,EAAQrF,GAAY,SAASha,EAAO4D,EAAKoW,GAIpD,MAAO,CAAE,SAHMkF,EAASO,GAAW,SAAS/F,GAC1C,OAAOA,EAAS1Z,EAClB,IAC+B,QAAWpF,EAAO,MAASoF,EAC5D,IAEA,OAAOsf,EAAW1e,GAAQ,SAAS8Z,EAAQiB,GACzC,OAAO6D,EAAgB9E,EAAQiB,EAAO+D,EACxC,GACF,WCjCAtlB,EAAOC,QANP,SAAsBuJ,GACpB,OAAO,SAAS8W,GACd,OAAiB,MAAVA,OAAiB3S,EAAY2S,EAAO9W,EAC7C,CACF,kBCXA,IAAIub,EAAU,EAAQ,MAetB/kB,EAAOC,QANP,SAA0BwgB,GACxB,OAAO,SAASH,GACd,OAAOyE,EAAQzE,EAAQG,EACzB,CACF,kBCbA,IAAI0D,EAAW,EAAQ,MACnBoB,EAAW,EAAQ,MACnBC,EAAc,EAAQ,IAc1BxlB,EAAOC,QAJP,SAAkB0F,EAAM8f,GACtB,OAAOD,EAAYD,EAAS5f,EAAM8f,EAAOtB,GAAWxe,EAAO,GAC7D,kBCdA,IAAI+f,EAAW,EAAQ,MACnBC,EAAiB,EAAQ,MACzBxB,EAAW,EAAQ,MAUnByB,EAAmBD,EAA4B,SAAShgB,EAAMzF,GAChE,OAAOylB,EAAehgB,EAAM,WAAY,CACtC,cAAgB,EAChB,YAAc,EACd,MAAS+f,EAASxlB,GAClB,UAAY,GAEhB,EAPwCikB,EASxCnkB,EAAOC,QAAU2lB,YCDjB5lB,EAAOC,QAVP,SAAoB0X,EAAOkO,GACzB,IAAInlB,EAASiX,EAAMjX,OAGnB,IADAiX,EAAMmO,KAAKD,GACJnlB,KACLiX,EAAMjX,GAAUiX,EAAMjX,GAAQkF,MAEhC,OAAO+R,CACT,YCCA3X,EAAOC,QAVP,SAAmBsB,EAAG+d,GAIpB,IAHA,IAAI9e,GAAS,EACTgG,EAASa,MAAM9F,KAEVf,EAAQe,GACfiF,EAAOhG,GAAS8e,EAAS9e,GAE3B,OAAOgG,CACT,iBCjBA,IAAIoB,EAAS,EAAQ,MACjBkd,EAAW,EAAQ,MACnB9M,EAAU,EAAQ,MAClB+N,EAAW,EAAQ,MAMnBC,EAAcpe,EAASA,EAAOhB,eAAY+G,EAC1CsY,EAAiBD,EAAcA,EAAY7e,cAAWwG,EA0B1D3N,EAAOC,QAhBP,SAASimB,EAAatgB,GAEpB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAAIoS,EAAQpS,GAEV,OAAOkf,EAASlf,EAAOsgB,GAAgB,GAEzC,GAAIH,EAASngB,GACX,OAAOqgB,EAAiBA,EAAe/jB,KAAK0D,GAAS,GAEvD,IAAIY,EAAUZ,EAAQ,GACtB,MAAkB,KAAVY,GAAkB,EAAIZ,IA3BjB,IA2BwC,KAAOY,CAC9D,kBClCA,IAAI2f,EAAkB,EAAQ,MAG1BC,EAAc,OAelBpmB,EAAOC,QANP,SAAkBC,GAChB,OAAOA,EACHA,EAAOsO,MAAM,EAAG2X,EAAgBjmB,GAAU,GAAGga,QAAQkM,EAAa,IAClElmB,CACN,YCHAF,EAAOC,QANP,SAAmB0F,GACjB,OAAO,SAASC,GACd,OAAOD,EAAKC,EACd,CACF,kBCXA,IAAIkf,EAAW,EAAQ,MAkBvB9kB,EAAOC,QANP,SAAoBqgB,EAAQ+F,GAC1B,OAAOvB,EAASuB,GAAO,SAAS7c,GAC9B,OAAO8W,EAAO9W,EAChB,GACF,YCJAxJ,EAAOC,QAJP,SAAkBqmB,EAAO9c,GACvB,OAAO8c,EAAMzJ,IAAIrT,EACnB,kBCVA,IAAIwO,EAAU,EAAQ,MAClB4M,EAAQ,EAAQ,MAChB2B,EAAe,EAAQ,MACvBpf,EAAW,EAAQ,MAiBvBnH,EAAOC,QAPP,SAAkB2F,EAAO0a,GACvB,OAAItI,EAAQpS,GACHA,EAEFgf,EAAMhf,EAAO0a,GAAU,CAAC1a,GAAS2gB,EAAapf,EAASvB,GAChE,kBClBA,IAAImgB,EAAW,EAAQ,MAwCvB/lB,EAAOC,QA9BP,SAA0B2F,EAAO2b,GAC/B,GAAI3b,IAAU2b,EAAO,CACnB,IAAIiF,OAAyB7Y,IAAV/H,EACf6gB,EAAsB,OAAV7gB,EACZ8gB,EAAiB9gB,GAAUA,EAC3B+gB,EAAcZ,EAASngB,GAEvBghB,OAAyBjZ,IAAV4T,EACfsF,EAAsB,OAAVtF,EACZuF,EAAiBvF,GAAUA,EAC3BwF,EAAchB,EAASxE,GAE3B,IAAMsF,IAAcE,IAAgBJ,GAAe/gB,EAAQ2b,GACtDoF,GAAeC,GAAgBE,IAAmBD,IAAcE,GAChEN,GAAaG,GAAgBE,IAC5BN,GAAgBM,IACjBJ,EACH,OAAO,EAET,IAAMD,IAAcE,IAAgBI,GAAenhB,EAAQ2b,GACtDwF,GAAeP,GAAgBE,IAAmBD,IAAcE,GAChEE,GAAaL,GAAgBE,IAC5BE,GAAgBF,IACjBI,EACH,OAAQ,CAEZ,CACA,OAAO,CACT,kBCtCA,IAAIE,EAAmB,EAAQ,MA2C/BhnB,EAAOC,QA3BP,SAAyBqgB,EAAQiB,EAAO+D,GAOtC,IANA,IAAI9kB,GAAS,EACTymB,EAAc3G,EAAO4G,SACrBC,EAAc5F,EAAM2F,SACpBxmB,EAASumB,EAAYvmB,OACrB0mB,EAAe9B,EAAO5kB,SAEjBF,EAAQE,GAAQ,CACvB,IAAI8F,EAASwgB,EAAiBC,EAAYzmB,GAAQ2mB,EAAY3mB,IAC9D,GAAIgG,EACF,OAAIhG,GAAS4mB,EACJ5gB,EAGFA,GAAmB,QADd8e,EAAO9kB,IACiB,EAAI,EAE5C,CAQA,OAAO8f,EAAO9f,MAAQ+gB,EAAM/gB,KAC9B,kBCzCA,IAGI6mB,EAHO,EAAQ,MAGG,sBAEtBrnB,EAAOC,QAAUonB,kBCLjB,IAAI9C,EAAc,EAAQ,MA+B1BvkB,EAAOC,QArBP,SAAwBqnB,EAAUxH,GAChC,OAAO,SAASF,EAAYN,GAC1B,GAAkB,MAAdM,EACF,OAAOA,EAET,IAAK2E,EAAY3E,GACf,OAAO0H,EAAS1H,EAAYN,GAM9B,IAJA,IAAI5e,EAASkf,EAAWlf,OACpBF,EAAQsf,EAAYpf,GAAU,EAC9BuG,EAAWC,OAAO0Y,IAEdE,EAAYtf,MAAYA,EAAQE,KACa,IAA/C4e,EAASrY,EAASzG,GAAQA,EAAOyG,KAIvC,OAAO2Y,CACT,CACF,YCLA5f,EAAOC,QAjBP,SAAuB6f,GACrB,OAAO,SAASQ,EAAQhB,EAAUoB,GAMhC,IALA,IAAIlgB,GAAS,EACTyG,EAAWC,OAAOoZ,GAClB+F,EAAQ3F,EAASJ,GACjB5f,EAAS2lB,EAAM3lB,OAEZA,KAAU,CACf,IAAI8I,EAAM6c,EAAMvG,EAAYpf,IAAWF,GACvC,IAA+C,IAA3C8e,EAASrY,EAASuC,GAAMA,EAAKvC,GAC/B,KAEJ,CACA,OAAOqZ,CACT,CACF,kBCtBA,IAAInE,EAAY,EAAQ,KAEpBwJ,EAAkB,WACpB,IACE,IAAIhgB,EAAOwW,EAAUjV,OAAQ,kBAE7B,OADAvB,EAAK,CAAC,EAAG,GAAI,CAAC,GACPA,CACI,CAAX,MAAOtE,GAAI,CACf,CANqB,GAQrBrB,EAAOC,QAAU0lB,kBCVjB,IAAI7H,EAAW,EAAQ,MACnByJ,EAAY,EAAQ,MACpBC,EAAW,EAAQ,MAiFvBxnB,EAAOC,QA9DP,SAAqB0X,EAAO4J,EAAOC,EAASC,EAAYS,EAAWR,GACjE,IAAI+F,EAjBqB,EAiBTjG,EACZkG,EAAY/P,EAAMjX,OAClBinB,EAAYpG,EAAM7gB,OAEtB,GAAIgnB,GAAaC,KAAeF,GAAaE,EAAYD,GACvD,OAAO,EAGT,IAAIE,EAAalG,EAAM5R,IAAI6H,GACvBkQ,EAAanG,EAAM5R,IAAIyR,GAC3B,GAAIqG,GAAcC,EAChB,OAAOD,GAAcrG,GAASsG,GAAclQ,EAE9C,IAAInX,GAAS,EACTgG,GAAS,EACTshB,EA/BuB,EA+BftG,EAAoC,IAAI1D,OAAWnQ,EAM/D,IAJA+T,EAAM9E,IAAIjF,EAAO4J,GACjBG,EAAM9E,IAAI2E,EAAO5J,KAGRnX,EAAQknB,GAAW,CAC1B,IAAIK,EAAWpQ,EAAMnX,GACjBwnB,EAAWzG,EAAM/gB,GAErB,GAAIihB,EACF,IAAIwG,EAAWR,EACXhG,EAAWuG,EAAUD,EAAUvnB,EAAO+gB,EAAO5J,EAAO+J,GACpDD,EAAWsG,EAAUC,EAAUxnB,EAAOmX,EAAO4J,EAAOG,GAE1D,QAAiB/T,IAAbsa,EAAwB,CAC1B,GAAIA,EACF,SAEFzhB,GAAS,EACT,KACF,CAEA,GAAIshB,GACF,IAAKP,EAAUhG,GAAO,SAASyG,EAAUE,GACnC,IAAKV,EAASM,EAAMI,KACfH,IAAaC,GAAY9F,EAAU6F,EAAUC,EAAUxG,EAASC,EAAYC,IAC/E,OAAOoG,EAAKzjB,KAAK6jB,EAErB,IAAI,CACN1hB,GAAS,EACT,KACF,OACK,GACDuhB,IAAaC,IACX9F,EAAU6F,EAAUC,EAAUxG,EAASC,EAAYC,GACpD,CACLlb,GAAS,EACT,KACF,CACF,CAGA,OAFAkb,EAAc,OAAE/J,GAChB+J,EAAc,OAAEH,GACT/a,CACT,kBCjFA,IAAIoB,EAAS,EAAQ,MACjBoF,EAAa,EAAQ,MACrBwS,EAAK,EAAQ,MACbmC,EAAc,EAAQ,MACtBwG,EAAa,EAAQ,MACrBC,EAAa,EAAQ,MAqBrBpC,EAAcpe,EAASA,EAAOhB,eAAY+G,EAC1C0a,EAAgBrC,EAAcA,EAAYsC,aAAU3a,EAoFxD3N,EAAOC,QAjEP,SAAoBqgB,EAAQiB,EAAOgH,EAAK/G,EAASC,EAAYS,EAAWR,GACtE,OAAQ6G,GACN,IAzBc,oBA0BZ,GAAKjI,EAAOkI,YAAcjH,EAAMiH,YAC3BlI,EAAOmI,YAAclH,EAAMkH,WAC9B,OAAO,EAETnI,EAASA,EAAOxM,OAChByN,EAAQA,EAAMzN,OAEhB,IAlCiB,uBAmCf,QAAKwM,EAAOkI,YAAcjH,EAAMiH,aAC3BtG,EAAU,IAAIlV,EAAWsT,GAAS,IAAItT,EAAWuU,KAKxD,IAnDU,mBAoDV,IAnDU,gBAoDV,IAjDY,kBAoDV,OAAO/B,GAAIc,GAASiB,GAEtB,IAxDW,iBAyDT,OAAOjB,EAAO7X,MAAQ8Y,EAAM9Y,MAAQ6X,EAAOoI,SAAWnH,EAAMmH,QAE9D,IAxDY,kBAyDZ,IAvDY,kBA2DV,OAAOpI,GAAWiB,EAAQ,GAE5B,IAjES,eAkEP,IAAIoH,EAAUR,EAEhB,IAjES,eAkEP,IAAIV,EA5EiB,EA4ELjG,EAGhB,GAFAmH,IAAYA,EAAUP,GAElB9H,EAAO3J,MAAQ4K,EAAM5K,OAAS8Q,EAChC,OAAO,EAGT,IAAImB,EAAUlH,EAAM5R,IAAIwQ,GACxB,GAAIsI,EACF,OAAOA,GAAWrH,EAEpBC,GAtFuB,EAyFvBE,EAAM9E,IAAI0D,EAAQiB,GAClB,IAAI/a,EAASmb,EAAYgH,EAAQrI,GAASqI,EAAQpH,GAAQC,EAASC,EAAYS,EAAWR,GAE1F,OADAA,EAAc,OAAEpB,GACT9Z,EAET,IAnFY,kBAoFV,GAAI6hB,EACF,OAAOA,EAAcnmB,KAAKoe,IAAW+H,EAAcnmB,KAAKqf,GAG9D,OAAO,CACT,kBC7GA,IAAIsH,EAAa,EAAQ,MASrBzP,EAHclS,OAAON,UAGQwS,eAgFjCpZ,EAAOC,QAjEP,SAAsBqgB,EAAQiB,EAAOC,EAASC,EAAYS,EAAWR,GACnE,IAAI+F,EAtBqB,EAsBTjG,EACZsH,EAAWD,EAAWvI,GACtByI,EAAYD,EAASpoB,OAIzB,GAAIqoB,GAHWF,EAAWtH,GACD7gB,SAEM+mB,EAC7B,OAAO,EAGT,IADA,IAAIjnB,EAAQuoB,EACLvoB,KAAS,CACd,IAAIgJ,EAAMsf,EAAStoB,GACnB,KAAMinB,EAAYje,KAAO+X,EAAQnI,EAAelX,KAAKqf,EAAO/X,IAC1D,OAAO,CAEX,CAEA,IAAIwf,EAAatH,EAAM5R,IAAIwQ,GACvBuH,EAAanG,EAAM5R,IAAIyR,GAC3B,GAAIyH,GAAcnB,EAChB,OAAOmB,GAAczH,GAASsG,GAAcvH,EAE9C,IAAI9Z,GAAS,EACbkb,EAAM9E,IAAI0D,EAAQiB,GAClBG,EAAM9E,IAAI2E,EAAOjB,GAGjB,IADA,IAAI2I,EAAWxB,IACNjnB,EAAQuoB,GAAW,CAE1B,IAAI9F,EAAW3C,EADf9W,EAAMsf,EAAStoB,IAEXwnB,EAAWzG,EAAM/X,GAErB,GAAIiY,EACF,IAAIwG,EAAWR,EACXhG,EAAWuG,EAAU/E,EAAUzZ,EAAK+X,EAAOjB,EAAQoB,GACnDD,EAAWwB,EAAU+E,EAAUxe,EAAK8W,EAAQiB,EAAOG,GAGzD,UAAmB/T,IAAbsa,EACGhF,IAAa+E,GAAY9F,EAAUe,EAAU+E,EAAUxG,EAASC,EAAYC,GAC7EuG,GACD,CACLzhB,GAAS,EACT,KACF,CACAyiB,IAAaA,EAAkB,eAAPzf,EAC1B,CACA,GAAIhD,IAAWyiB,EAAU,CACvB,IAAIC,EAAU5I,EAAOzZ,YACjBsiB,EAAU5H,EAAM1a,YAGhBqiB,GAAWC,KACV,gBAAiB7I,MAAU,gBAAiBiB,IACzB,mBAAX2H,GAAyBA,aAAmBA,GACjC,mBAAXC,GAAyBA,aAAmBA,IACvD3iB,GAAS,EAEb,CAGA,OAFAkb,EAAc,OAAEpB,GAChBoB,EAAc,OAAEH,GACT/a,CACT,kBCtFA,IAAI4iB,EAA8B,iBAAV,EAAAC,GAAsB,EAAAA,GAAU,EAAAA,EAAOniB,SAAWA,QAAU,EAAAmiB,EAEpFrpB,EAAOC,QAAUmpB,kBCHjB,IAAIE,EAAiB,EAAQ,MACzBC,EAAa,EAAQ,MACrB9X,EAAO,EAAQ,MAanBzR,EAAOC,QAJP,SAAoBqgB,GAClB,OAAOgJ,EAAehJ,EAAQ7O,EAAM8X,EACtC,kBCbA,IAAIC,EAAY,EAAQ,MAiBxBxpB,EAAOC,QAPP,SAAoBwpB,EAAKjgB,GACvB,IAAIvG,EAAOwmB,EAAI1L,SACf,OAAOyL,EAAUhgB,GACbvG,EAAmB,iBAAPuG,EAAkB,SAAW,QACzCvG,EAAKwmB,GACX,kBCfA,IAAI5E,EAAqB,EAAQ,MAC7BpT,EAAO,EAAQ,MAsBnBzR,EAAOC,QAbP,SAAsBqgB,GAIpB,IAHA,IAAI9Z,EAASiL,EAAK6O,GACd5f,EAAS8F,EAAO9F,OAEbA,KAAU,CACf,IAAI8I,EAAMhD,EAAO9F,GACbkF,EAAQ0a,EAAO9W,GAEnBhD,EAAO9F,GAAU,CAAC8I,EAAK5D,EAAOif,EAAmBjf,GACnD,CACA,OAAOY,CACT,iBCrBA,IAAIkjB,EAAe,EAAQ,MACvBC,EAAW,EAAQ,MAevB3pB,EAAOC,QALP,SAAmBqgB,EAAQ9W,GACzB,IAAI5D,EAAQ+jB,EAASrJ,EAAQ9W,GAC7B,OAAOkgB,EAAa9jB,GAASA,OAAQ+H,CACvC,kBCdA,IAAI/F,EAAS,EAAQ,MAGjB+b,EAAczc,OAAON,UAGrBwS,EAAiBuK,EAAYvK,eAO7BwQ,EAAuBjG,EAAYxc,SAGnC2Z,EAAiBlZ,EAASA,EAAOmZ,iBAAcpT,EA6BnD3N,EAAOC,QApBP,SAAmB2F,GACjB,IAAIikB,EAAQzQ,EAAelX,KAAK0D,EAAOkb,GACnCyH,EAAM3iB,EAAMkb,GAEhB,IACElb,EAAMkb,QAAkBnT,EACxB,IAAImc,GAAW,CACJ,CAAX,MAAOzoB,GAAI,CAEb,IAAImF,EAASojB,EAAqB1nB,KAAK0D,GAQvC,OAPIkkB,IACED,EACFjkB,EAAMkb,GAAkByH,SAEjB3iB,EAAMkb,IAGVta,CACT,kBC3CA,IAAIujB,EAAc,EAAQ,MACtBC,EAAY,EAAQ,KAMpBC,EAHc/iB,OAAON,UAGcqjB,qBAGnCC,EAAmBhjB,OAAOijB,sBAS1BZ,EAAcW,EAA+B,SAAS5J,GACxD,OAAc,MAAVA,EACK,IAETA,EAASpZ,OAAOoZ,GACTyJ,EAAYG,EAAiB5J,IAAS,SAAS8J,GACpD,OAAOH,EAAqB/nB,KAAKoe,EAAQ8J,EAC3C,IACF,EARqCJ,EAUrChqB,EAAOC,QAAUspB,kBC7BjB,IAAIrN,EAAW,EAAQ,MACnBkB,EAAM,EAAQ,MACdxY,EAAU,EAAQ,MAClB+Y,EAAM,EAAQ,MACdY,EAAU,EAAQ,KAClB4C,EAAa,EAAQ,MACrBoC,EAAW,EAAQ,KAGnB8G,EAAS,eAETC,EAAa,mBACbC,EAAS,eACTC,EAAa,mBAEbC,EAAc,oBAGdC,EAAqBnH,EAASrH,GAC9ByO,EAAgBpH,EAASnG,GACzBwN,EAAoBrH,EAAS3e,GAC7BimB,EAAgBtH,EAAS5F,GACzBmN,EAAoBvH,EAAShF,GAS7BuD,EAASX,GAGRjF,GAAY4F,EAAO,IAAI5F,EAAS,IAAIpP,YAAY,MAAQ2d,GACxDrN,GAAO0E,EAAO,IAAI1E,IAAQiN,GAC1BzlB,GAAWkd,EAAOld,EAAQmB,YAAcukB,GACxC3M,GAAOmE,EAAO,IAAInE,IAAQ4M,GAC1BhM,GAAWuD,EAAO,IAAIvD,IAAYiM,KACrC1I,EAAS,SAASlc,GAChB,IAAIY,EAAS2a,EAAWvb,GACpBmlB,EA/BQ,mBA+BDvkB,EAAsBZ,EAAMiB,iBAAc8G,EACjDqd,EAAaD,EAAOxH,EAASwH,GAAQ,GAEzC,GAAIC,EACF,OAAQA,GACN,KAAKN,EAAoB,OAAOD,EAChC,KAAKE,EAAe,OAAON,EAC3B,KAAKO,EAAmB,OAAON,EAC/B,KAAKO,EAAe,OAAON,EAC3B,KAAKO,EAAmB,OAAON,EAGnC,OAAOhkB,CACT,GAGFxG,EAAOC,QAAU6hB,YC7CjB9hB,EAAOC,QAJP,SAAkBqgB,EAAQ9W,GACxB,OAAiB,MAAV8W,OAAiB3S,EAAY2S,EAAO9W,EAC7C,iBCVA,IAAI+W,EAAW,EAAQ,MACnB3B,EAAc,EAAQ,MACtB5G,EAAU,EAAQ,MAClB8G,EAAU,EAAQ,MAClBiF,EAAW,EAAQ,MACnBvD,EAAQ,EAAQ,KAiCpBxgB,EAAOC,QAtBP,SAAiBqgB,EAAQG,EAAMwK,GAO7B,IAJA,IAAIzqB,GAAS,EACTE,GAHJ+f,EAAOF,EAASE,EAAMH,IAGJ5f,OACd8F,GAAS,IAEJhG,EAAQE,GAAQ,CACvB,IAAI8I,EAAMgX,EAAMC,EAAKjgB,IACrB,KAAMgG,EAAmB,MAAV8Z,GAAkB2K,EAAQ3K,EAAQ9W,IAC/C,MAEF8W,EAASA,EAAO9W,EAClB,CACA,OAAIhD,KAAYhG,GAASE,EAChB8F,KAET9F,EAAmB,MAAV4f,EAAiB,EAAIA,EAAO5f,SAClBqjB,EAASrjB,IAAWoe,EAAQtV,EAAK9I,KACjDsX,EAAQsI,IAAW1B,EAAY0B,GACpC,kBCpCA,IAAI4K,EAAe,EAAQ,MAc3BlrB,EAAOC,QALP,WACEkB,KAAK4c,SAAWmN,EAAeA,EAAa,MAAQ,CAAC,EACrD/pB,KAAKwV,KAAO,CACd,WCIA3W,EAAOC,QANP,SAAoBuJ,GAClB,IAAIhD,EAASrF,KAAK0b,IAAIrT,WAAerI,KAAK4c,SAASvU,GAEnD,OADArI,KAAKwV,MAAQnQ,EAAS,EAAI,EACnBA,CACT,kBCdA,IAAI0kB,EAAe,EAAQ,MASvB9R,EAHclS,OAAON,UAGQwS,eAoBjCpZ,EAAOC,QATP,SAAiBuJ,GACf,IAAIvG,EAAO9B,KAAK4c,SAChB,GAAImN,EAAc,CAChB,IAAI1kB,EAASvD,EAAKuG,GAClB,MArBiB,8BAqBVhD,OAA4BmH,EAAYnH,CACjD,CACA,OAAO4S,EAAelX,KAAKe,EAAMuG,GAAOvG,EAAKuG,QAAOmE,CACtD,kBC3BA,IAAIud,EAAe,EAAQ,MAMvB9R,EAHclS,OAAON,UAGQwS,eAgBjCpZ,EAAOC,QALP,SAAiBuJ,GACf,IAAIvG,EAAO9B,KAAK4c,SAChB,OAAOmN,OAA8Bvd,IAAd1K,EAAKuG,GAAsB4P,EAAelX,KAAKe,EAAMuG,EAC9E,kBCpBA,IAAI0hB,EAAe,EAAQ,MAsB3BlrB,EAAOC,QAPP,SAAiBuJ,EAAK5D,GACpB,IAAI3C,EAAO9B,KAAK4c,SAGhB,OAFA5c,KAAKwV,MAAQxV,KAAK0b,IAAIrT,GAAO,EAAI,EACjCvG,EAAKuG,GAAQ0hB,QAA0Bvd,IAAV/H,EAfV,4BAekDA,EAC9DzE,IACT,kBCpBA,IAAIyG,EAAS,EAAQ,MACjBgX,EAAc,EAAQ,MACtB5G,EAAU,EAAQ,MAGlBmT,EAAmBvjB,EAASA,EAAOwjB,wBAAqBzd,EAc5D3N,EAAOC,QALP,SAAuB2F,GACrB,OAAOoS,EAAQpS,IAAUgZ,EAAYhZ,OAChCulB,GAAoBvlB,GAASA,EAAMulB,GAC1C,YChBA,IAGIE,EAAW,mBAoBfrrB,EAAOC,QAVP,SAAiB2F,EAAOlF,GACtB,IAAIuI,SAAcrD,EAGlB,SAFAlF,EAAmB,MAAVA,EAfY,iBAewBA,KAGlC,UAARuI,GACU,UAARA,GAAoBoiB,EAASvc,KAAKlJ,KAChCA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,EAAQlF,CACjD,kBCtBA,IAAI8e,EAAK,EAAQ,MACb+E,EAAc,EAAQ,MACtBzF,EAAU,EAAQ,MAClBwE,EAAW,EAAQ,MA0BvBtjB,EAAOC,QAdP,SAAwB2F,EAAOpF,EAAO8f,GACpC,IAAKgD,EAAShD,GACZ,OAAO,EAET,IAAIrX,SAAczI,EAClB,SAAY,UAARyI,EACKsb,EAAYjE,IAAWxB,EAAQte,EAAO8f,EAAO5f,QACrC,UAARuI,GAAoBzI,KAAS8f,IAE7Bd,EAAGc,EAAO9f,GAAQoF,EAG7B,kBC3BA,IAAIoS,EAAU,EAAQ,MAClB+N,EAAW,EAAQ,MAGnBuF,EAAe,mDACfC,EAAgB,QAuBpBvrB,EAAOC,QAbP,SAAe2F,EAAO0a,GACpB,GAAItI,EAAQpS,GACV,OAAO,EAET,IAAIqD,SAAcrD,EAClB,QAAY,UAARqD,GAA4B,UAARA,GAA4B,WAARA,GAC/B,MAATrD,IAAiBmgB,EAASngB,KAGvB2lB,EAAczc,KAAKlJ,KAAW0lB,EAAaxc,KAAKlJ,IAC1C,MAAV0a,GAAkB1a,KAASsB,OAAOoZ,EACvC,YCZAtgB,EAAOC,QAPP,SAAmB2F,GACjB,IAAIqD,SAAcrD,EAClB,MAAgB,UAARqD,GAA4B,UAARA,GAA4B,UAARA,GAA4B,WAARA,EACrD,cAAVrD,EACU,OAAVA,CACP,kBCZA,IAIM4lB,EAJFnE,EAAa,EAAQ,MAGrBoE,GACED,EAAM,SAASlrB,KAAK+mB,GAAcA,EAAW5V,MAAQ4V,EAAW5V,KAAKia,UAAY,KACvE,iBAAmBF,EAAO,GAc1CxrB,EAAOC,QAJP,SAAkB0F,GAChB,QAAS8lB,GAAeA,KAAc9lB,CACxC,YChBA,IAAIge,EAAczc,OAAON,UAgBzB5G,EAAOC,QAPP,SAAqB2F,GACnB,IAAImlB,EAAOnlB,GAASA,EAAMiB,YAG1B,OAAOjB,KAFqB,mBAARmlB,GAAsBA,EAAKnkB,WAAc+c,EAG/D,kBCfA,IAAIL,EAAW,EAAQ,MAcvBtjB,EAAOC,QAJP,SAA4B2F,GAC1B,OAAOA,GAAUA,IAAU0d,EAAS1d,EACtC,YCAA5F,EAAOC,QALP,WACEkB,KAAK4c,SAAW,GAChB5c,KAAKwV,KAAO,CACd,kBCVA,IAAIgV,EAAe,EAAQ,MAMvBC,EAHavkB,MAAMT,UAGCglB,OA4BxB5rB,EAAOC,QAjBP,SAAyBuJ,GACvB,IAAIvG,EAAO9B,KAAK4c,SACZvd,EAAQmrB,EAAa1oB,EAAMuG,GAE/B,QAAIhJ,EAAQ,IAIRA,GADYyC,EAAKvC,OAAS,EAE5BuC,EAAKwH,MAELmhB,EAAO1pB,KAAKe,EAAMzC,EAAO,KAEzBW,KAAKwV,KACA,GACT,kBChCA,IAAIgV,EAAe,EAAQ,MAkB3B3rB,EAAOC,QAPP,SAAsBuJ,GACpB,IAAIvG,EAAO9B,KAAK4c,SACZvd,EAAQmrB,EAAa1oB,EAAMuG,GAE/B,OAAOhJ,EAAQ,OAAImN,EAAY1K,EAAKzC,GAAO,EAC7C,kBChBA,IAAImrB,EAAe,EAAQ,MAe3B3rB,EAAOC,QAJP,SAAsBuJ,GACpB,OAAOmiB,EAAaxqB,KAAK4c,SAAUvU,IAAQ,CAC7C,kBCbA,IAAImiB,EAAe,EAAQ,MAyB3B3rB,EAAOC,QAbP,SAAsBuJ,EAAK5D,GACzB,IAAI3C,EAAO9B,KAAK4c,SACZvd,EAAQmrB,EAAa1oB,EAAMuG,GAQ/B,OANIhJ,EAAQ,KACRW,KAAKwV,KACP1T,EAAKoB,KAAK,CAACmF,EAAK5D,KAEhB3C,EAAKzC,GAAO,GAAKoF,EAEZzE,IACT,kBCvBA,IAAIsb,EAAO,EAAQ,MACfU,EAAY,EAAQ,MACpBC,EAAM,EAAQ,MAkBlBpd,EAAOC,QATP,WACEkB,KAAKwV,KAAO,EACZxV,KAAK4c,SAAW,CACd,KAAQ,IAAItB,EACZ,IAAO,IAAKW,GAAOD,GACnB,OAAU,IAAIV,EAElB,kBClBA,IAAIoP,EAAa,EAAQ,MAiBzB7rB,EAAOC,QANP,SAAwBuJ,GACtB,IAAIhD,EAASqlB,EAAW1qB,KAAMqI,GAAa,OAAEA,GAE7C,OADArI,KAAKwV,MAAQnQ,EAAS,EAAI,EACnBA,CACT,iBCfA,IAAIqlB,EAAa,EAAQ,MAezB7rB,EAAOC,QAJP,SAAqBuJ,GACnB,OAAOqiB,EAAW1qB,KAAMqI,GAAKsG,IAAItG,EACnC,kBCbA,IAAIqiB,EAAa,EAAQ,MAezB7rB,EAAOC,QAJP,SAAqBuJ,GACnB,OAAOqiB,EAAW1qB,KAAMqI,GAAKqT,IAAIrT,EACnC,kBCbA,IAAIqiB,EAAa,EAAQ,MAqBzB7rB,EAAOC,QATP,SAAqBuJ,EAAK5D,GACxB,IAAI3C,EAAO4oB,EAAW1qB,KAAMqI,GACxBmN,EAAO1T,EAAK0T,KAIhB,OAFA1T,EAAK2Z,IAAIpT,EAAK5D,GACdzE,KAAKwV,MAAQ1T,EAAK0T,MAAQA,EAAO,EAAI,EAC9BxV,IACT,YCFAnB,EAAOC,QAVP,SAAoBwpB,GAClB,IAAIjpB,GAAS,EACTgG,EAASa,MAAMoiB,EAAI9S,MAKvB,OAHA8S,EAAIqC,SAAQ,SAASlmB,EAAO4D,GAC1BhD,IAAShG,GAAS,CAACgJ,EAAK5D,EAC1B,IACOY,CACT,YCIAxG,EAAOC,QAVP,SAAiCuJ,EAAK0Z,GACpC,OAAO,SAAS5C,GACd,OAAc,MAAVA,GAGGA,EAAO9W,KAAS0Z,SACPvV,IAAbuV,GAA2B1Z,KAAOtC,OAAOoZ,GAC9C,CACF,kBCjBA,IAAIyL,EAAU,EAAQ,MAyBtB/rB,EAAOC,QAZP,SAAuB0F,GACrB,IAAIa,EAASulB,EAAQpmB,GAAM,SAAS6D,GAIlC,OAfmB,MAYf8c,EAAM3P,MACR2P,EAAMlV,QAED5H,CACT,IAEI8c,EAAQ9f,EAAO8f,MACnB,OAAO9f,CACT,kBCvBA,IAGI0kB,EAHY,EAAQ,IAGL/O,CAAUjV,OAAQ,UAErClH,EAAOC,QAAUirB,kBCLjB,IAGI5G,EAHU,EAAQ,KAGL0H,CAAQ9kB,OAAOuK,KAAMvK,QAEtClH,EAAOC,QAAUqkB,6BCLjB,IAAI8E,EAAa,EAAQ,MAGrB6C,EAA4ChsB,IAAYA,EAAQisB,UAAYjsB,EAG5EksB,EAAaF,GAA4CjsB,IAAWA,EAAOksB,UAAYlsB,EAMvFosB,EAHgBD,GAAcA,EAAWlsB,UAAYgsB,GAGtB7C,EAAWiD,QAG1CC,EAAY,WACd,IAIE,OAFYH,GAAcA,EAAWtqB,SAAWsqB,EAAWtqB,QAAQ,QAAQ0qB,OAOpEH,GAAeA,EAAYI,SAAWJ,EAAYI,QAAQ,OACtD,CAAX,MAAOnrB,GAAI,CACf,CAZe,GAcfrB,EAAOC,QAAUqsB,YC5BjB,IAOI1C,EAPc1iB,OAAON,UAOcO,SAavCnH,EAAOC,QAJP,SAAwB2F,GACtB,OAAOgkB,EAAqB1nB,KAAK0D,EACnC,YCLA5F,EAAOC,QANP,SAAiB0F,EAAM8mB,GACrB,OAAO,SAASxU,GACd,OAAOtS,EAAK8mB,EAAUxU,GACxB,CACF,kBCZA,IAAI9R,EAAQ,EAAQ,MAGhBumB,EAAYC,KAAKC,IAgCrB5sB,EAAOC,QArBP,SAAkB0F,EAAM8f,EAAOgH,GAE7B,OADAhH,EAAQiH,OAAoB/e,IAAV8X,EAAuB9f,EAAKjF,OAAS,EAAK+kB,EAAO,GAC5D,WAML,IALA,IAAI9P,EAAOvP,UACP5F,GAAS,EACTE,EAASgsB,EAAU/W,EAAKjV,OAAS+kB,EAAO,GACxC9N,EAAQtQ,MAAM3G,KAETF,EAAQE,GACfiX,EAAMnX,GAASmV,EAAK8P,EAAQjlB,GAE9BA,GAAS,EAET,IADA,IAAIqsB,EAAYxlB,MAAMoe,EAAQ,KACrBjlB,EAAQilB,GACfoH,EAAUrsB,GAASmV,EAAKnV,GAG1B,OADAqsB,EAAUpH,GAASgH,EAAU9U,GACtBxR,EAAMR,EAAMxE,KAAM0rB,EAC3B,CACF,kBCjCA,IAAIzD,EAAa,EAAQ,MAGrB0D,EAA0B,iBAAR5rB,MAAoBA,MAAQA,KAAKgG,SAAWA,QAAUhG,KAGxE6rB,EAAO3D,GAAc0D,GAAYpJ,SAAS,cAATA,GAErC1jB,EAAOC,QAAU8sB,WCUjB/sB,EAAOC,QALP,SAAqB2F,GAEnB,OADAzE,KAAK4c,SAASnB,IAAIhX,EAbC,6BAcZzE,IACT,YCHAnB,EAAOC,QAJP,SAAqB2F,GACnB,OAAOzE,KAAK4c,SAASlB,IAAIjX,EAC3B,YCMA5F,EAAOC,QAVP,SAAoB2c,GAClB,IAAIpc,GAAS,EACTgG,EAASa,MAAMuV,EAAIjG,MAKvB,OAHAiG,EAAIkP,SAAQ,SAASlmB,GACnBY,IAAShG,GAASoF,CACpB,IACOY,CACT,gBCfA,IAAIof,EAAkB,EAAQ,MAW1BJ,EAVW,EAAQ,KAULwH,CAASpH,GAE3B5lB,EAAOC,QAAUulB,YCZjB,IAIIyH,EAAYC,KAAKC,IA+BrBntB,EAAOC,QApBP,SAAkB0F,GAChB,IAAI0L,EAAQ,EACR+b,EAAa,EAEjB,OAAO,WACL,IAAIC,EAAQJ,IACRK,EApBO,IAoBiBD,EAAQD,GAGpC,GADAA,EAAaC,EACTC,EAAY,GACd,KAAMjc,GAzBI,IA0BR,OAAOjL,UAAU,QAGnBiL,EAAQ,EAEV,OAAO1L,EAAKQ,WAAMwH,EAAWvH,UAC/B,CACF,kBClCA,IAAI+W,EAAY,EAAQ,MAcxBnd,EAAOC,QALP,WACEkB,KAAK4c,SAAW,IAAIZ,EACpBhc,KAAKwV,KAAO,CACd,YCKA3W,EAAOC,QARP,SAAqBuJ,GACnB,IAAIvG,EAAO9B,KAAK4c,SACZvX,EAASvD,EAAa,OAAEuG,GAG5B,OADArI,KAAKwV,KAAO1T,EAAK0T,KACVnQ,CACT,YCFAxG,EAAOC,QAJP,SAAkBuJ,GAChB,OAAOrI,KAAK4c,SAASjO,IAAItG,EAC3B,YCEAxJ,EAAOC,QAJP,SAAkBuJ,GAChB,OAAOrI,KAAK4c,SAASlB,IAAIrT,EAC3B,kBCXA,IAAI2T,EAAY,EAAQ,MACpBC,EAAM,EAAQ,MACdM,EAAW,EAAQ,MA+BvB1d,EAAOC,QAhBP,SAAkBuJ,EAAK5D,GACrB,IAAI3C,EAAO9B,KAAK4c,SAChB,GAAI9a,aAAgBka,EAAW,CAC7B,IAAIoQ,EAAQtqB,EAAK8a,SACjB,IAAKX,GAAQmQ,EAAM7sB,OAAS8sB,IAG1B,OAFAD,EAAMlpB,KAAK,CAACmF,EAAK5D,IACjBzE,KAAKwV,OAAS1T,EAAK0T,KACZxV,KAET8B,EAAO9B,KAAK4c,SAAW,IAAIL,EAAS6P,EACtC,CAGA,OAFAtqB,EAAK2Z,IAAIpT,EAAK5D,GACdzE,KAAKwV,KAAO1T,EAAK0T,KACVxV,IACT,YCTAnB,EAAOC,QAZP,SAAuB0X,EAAO/R,EAAOia,GAInC,IAHA,IAAIrf,EAAQqf,EAAY,EACpBnf,EAASiX,EAAMjX,SAEVF,EAAQE,GACf,GAAIiX,EAAMnX,KAAWoF,EACnB,OAAOpF,EAGX,OAAQ,CACV,kBCpBA,IAAIitB,EAAgB,EAAQ,MAGxBC,EAAa,mGAGbC,EAAe,WASfpH,EAAekH,GAAc,SAASvtB,GACxC,IAAIsG,EAAS,GAOb,OAN6B,KAAzBtG,EAAOS,WAAW,IACpB6F,EAAOnC,KAAK,IAEdnE,EAAOga,QAAQwT,GAAY,SAASrtB,EAAOutB,EAAQC,EAAOC,GACxDtnB,EAAOnC,KAAKwpB,EAAQC,EAAU5T,QAAQyT,EAAc,MAASC,GAAUvtB,EACzE,IACOmG,CACT,IAEAxG,EAAOC,QAAUsmB,iBC1BjB,IAAIR,EAAW,EAAQ,MAoBvB/lB,EAAOC,QARP,SAAe2F,GACb,GAAoB,iBAATA,GAAqBmgB,EAASngB,GACvC,OAAOA,EAET,IAAIY,EAAUZ,EAAQ,GACtB,MAAkB,KAAVY,GAAkB,EAAIZ,IAdjB,IAcwC,KAAOY,CAC9D,WCjBA,IAGIod,EAHYF,SAAS9c,UAGIO,SAqB7BnH,EAAOC,QAZP,SAAkB0F,GAChB,GAAY,MAARA,EAAc,CAChB,IACE,OAAOie,EAAa1hB,KAAKyD,EACd,CAAX,MAAOtE,GAAI,CACb,IACE,OAAQsE,EAAO,EACJ,CAAX,MAAOtE,GAAI,CACf,CACA,MAAO,EACT,YCtBA,IAAI0sB,EAAe,KAiBnB/tB,EAAOC,QAPP,SAAyBC,GAGvB,IAFA,IAAIM,EAAQN,EAAOQ,OAEZF,KAAWutB,EAAajf,KAAK5O,EAAO8tB,OAAOxtB,MAClD,OAAOA,CACT,YCSAR,EAAOC,QANP,SAAkB2F,GAChB,OAAO,WACL,OAAOA,CACT,CACF,YCaA5F,EAAOC,QAJP,SAAY2F,EAAO2b,GACjB,OAAO3b,IAAU2b,GAAU3b,GAAUA,GAAS2b,GAAUA,CAC1D,kBClCA,IAAIwI,EAAc,EAAQ,MACtBkE,EAAa,EAAQ,KACrBjJ,EAAe,EAAQ,MACvBhN,EAAU,EAAQ,MAgDtBhY,EAAOC,QALP,SAAgB2f,EAAYnB,GAE1B,OADWzG,EAAQ4H,GAAcmK,EAAckE,GACnCrO,EAAYoF,EAAavG,EAAW,GAClD,kBCjDA,IAAIsG,EAAU,EAAQ,MAgCtB/kB,EAAOC,QALP,SAAaqgB,EAAQG,EAAMyN,GACzB,IAAI1nB,EAAmB,MAAV8Z,OAAiB3S,EAAYoX,EAAQzE,EAAQG,GAC1D,YAAkB9S,IAAXnH,EAAuB0nB,EAAe1nB,CAC/C,kBC9BA,IAAI2nB,EAAY,EAAQ,IACpBC,EAAU,EAAQ,KAgCtBpuB,EAAOC,QAJP,SAAeqgB,EAAQG,GACrB,OAAiB,MAAVH,GAAkB8N,EAAQ9N,EAAQG,EAAM0N,EACjD,YCXAnuB,EAAOC,QAJP,SAAkB2F,GAChB,OAAOA,CACT,kBClBA,IAAIyoB,EAAc,EAAQ,MACtB9J,EAAc,EAAQ,MACtB+J,EAAW,EAAQ,MACnBC,EAAY,EAAQ,KACpBnnB,EAAS,EAAQ,MAGjBslB,EAAYC,KAAKC,IA6CrB5sB,EAAOC,QAbP,SAAkB2f,EAAYha,EAAOia,EAAW2O,GAC9C5O,EAAa2E,EAAY3E,GAAcA,EAAaxY,EAAOwY,GAC3DC,EAAaA,IAAc2O,EAASD,EAAU1O,GAAa,EAE3D,IAAInf,EAASkf,EAAWlf,OAIxB,OAHImf,EAAY,IACdA,EAAY6M,EAAUhsB,EAASmf,EAAW,IAErCyO,EAAS1O,GACXC,GAAanf,GAAUkf,EAAWxQ,QAAQxJ,EAAOia,IAAc,IAC7Dnf,GAAU2tB,EAAYzO,EAAYha,EAAOia,IAAc,CAChE,kBClDA,IAAI4O,EAAkB,EAAQ,MAC1BrN,EAAe,EAAQ,MAGvBuC,EAAczc,OAAON,UAGrBwS,EAAiBuK,EAAYvK,eAG7B6Q,EAAuBtG,EAAYsG,qBAoBnCrL,EAAc6P,EAAgB,WAAa,OAAOroB,SAAW,CAA/B,IAAsCqoB,EAAkB,SAAS7oB,GACjG,OAAOwb,EAAaxb,IAAUwT,EAAelX,KAAK0D,EAAO,YACtDqkB,EAAqB/nB,KAAK0D,EAAO,SACtC,EAEA5F,EAAOC,QAAU2e,YCZjB,IAAI5G,EAAU3Q,MAAM2Q,QAEpBhY,EAAOC,QAAU+X,kBCzBjB,IAAIoL,EAAa,EAAQ,MACrBW,EAAW,EAAQ,MA+BvB/jB,EAAOC,QAJP,SAAqB2F,GACnB,OAAgB,MAATA,GAAiBme,EAASne,EAAMlF,UAAY0iB,EAAWxd,EAChE,6BC9BA,IAAImnB,EAAO,EAAQ,MACf2B,EAAY,EAAQ,MAGpBzC,EAA4ChsB,IAAYA,EAAQisB,UAAYjsB,EAG5EksB,EAAaF,GAA4CjsB,IAAWA,EAAOksB,UAAYlsB,EAMvF2uB,EAHgBxC,GAAcA,EAAWlsB,UAAYgsB,EAG5Bc,EAAK4B,YAAShhB,EAsBvCkR,GAnBiB8P,EAASA,EAAO9P,cAAWlR,IAmBf+gB,EAEjC1uB,EAAOC,QAAU4e,kBCrCjB,IAAIsC,EAAa,EAAQ,MACrBmC,EAAW,EAAQ,MAmCvBtjB,EAAOC,QAVP,SAAoB2F,GAClB,IAAK0d,EAAS1d,GACZ,OAAO,EAIT,IAAI2iB,EAAMpH,EAAWvb,GACrB,MA5BY,qBA4BL2iB,GA3BI,8BA2BcA,GA7BZ,0BA6B6BA,GA1B7B,kBA0BgDA,CAC/D,YCAAvoB,EAAOC,QALP,SAAkB2F,GAChB,MAAuB,iBAATA,GACZA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,GA9Bb,gBA+BvB,YCFA5F,EAAOC,QALP,SAAkB2F,GAChB,IAAIqD,SAAcrD,EAClB,OAAgB,MAATA,IAA0B,UAARqD,GAA4B,YAARA,EAC/C,YCAAjJ,EAAOC,QAJP,SAAsB2F,GACpB,OAAgB,MAATA,GAAiC,iBAATA,CACjC,kBC1BA,IAAIub,EAAa,EAAQ,MACrBnJ,EAAU,EAAQ,MAClBoJ,EAAe,EAAQ,MA2B3BphB,EAAOC,QALP,SAAkB2F,GAChB,MAAuB,iBAATA,IACVoS,EAAQpS,IAAUwb,EAAaxb,IArBrB,mBAqB+Bub,EAAWvb,EAC1D,kBC3BA,IAAIub,EAAa,EAAQ,MACrBC,EAAe,EAAQ,MA2B3BphB,EAAOC,QALP,SAAkB2F,GAChB,MAAuB,iBAATA,GACXwb,EAAaxb,IArBF,mBAqBYub,EAAWvb,EACvC,kBC1BA,IAAIgpB,EAAmB,EAAQ,MAC3BzJ,EAAY,EAAQ,MACpBmH,EAAW,EAAQ,MAGnBuC,EAAmBvC,GAAYA,EAASvN,aAmBxCA,EAAe8P,EAAmB1J,EAAU0J,GAAoBD,EAEpE5uB,EAAOC,QAAU8e,kBC1BjB,IAAI+P,EAAgB,EAAQ,MACxBC,EAAW,EAAQ,KACnBxK,EAAc,EAAQ,MAkC1BvkB,EAAOC,QAJP,SAAcqgB,GACZ,OAAOiE,EAAYjE,GAAUwO,EAAcxO,GAAUyO,EAASzO,EAChE,kBClCA,IAAI5C,EAAW,EAAQ,MAiDvB,SAASqO,EAAQpmB,EAAMd,GACrB,GAAmB,mBAARc,GAAmC,MAAZd,GAAuC,mBAAZA,EAC3D,MAAM,IAAIC,UAhDQ,uBAkDpB,IAAIkqB,EAAW,WACb,IAAIrZ,EAAOvP,UACPoD,EAAM3E,EAAWA,EAASsB,MAAMhF,KAAMwU,GAAQA,EAAK,GACnD2Q,EAAQ0I,EAAS1I,MAErB,GAAIA,EAAMzJ,IAAIrT,GACZ,OAAO8c,EAAMxW,IAAItG,GAEnB,IAAIhD,EAASb,EAAKQ,MAAMhF,KAAMwU,GAE9B,OADAqZ,EAAS1I,MAAQA,EAAM1J,IAAIpT,EAAKhD,IAAW8f,EACpC9f,CACT,EAEA,OADAwoB,EAAS1I,MAAQ,IAAKyF,EAAQkD,OAASvR,GAChCsR,CACT,CAGAjD,EAAQkD,MAAQvR,EAEhB1d,EAAOC,QAAU8rB,kBCxEjB,IAAImD,EAAe,EAAQ,KACvBC,EAAmB,EAAQ,MAC3BvK,EAAQ,EAAQ,MAChBpE,EAAQ,EAAQ,KA4BpBxgB,EAAOC,QAJP,SAAkBwgB,GAChB,OAAOmE,EAAMnE,GAAQyO,EAAa1O,EAAMC,IAAS0O,EAAiB1O,EACpE,kBC7BA,IAAIR,EAAc,EAAQ,MACtBmP,EAAc,EAAQ,MACtBC,EAAW,EAAQ,MACnBC,EAAiB,EAAQ,MA+BzBC,EAASF,GAAS,SAASzP,EAAYyF,GACzC,GAAkB,MAAdzF,EACF,MAAO,GAET,IAAIlf,EAAS2kB,EAAU3kB,OAMvB,OALIA,EAAS,GAAK4uB,EAAe1P,EAAYyF,EAAU,GAAIA,EAAU,IACnEA,EAAY,GACH3kB,EAAS,GAAK4uB,EAAejK,EAAU,GAAIA,EAAU,GAAIA,EAAU,MAC5EA,EAAY,CAACA,EAAU,KAElB+J,EAAYxP,EAAYK,EAAYoF,EAAW,GAAI,GAC5D,IAEArlB,EAAOC,QAAUsvB,WCzBjBvvB,EAAOC,QAJP,WACE,MAAO,EACT,YCHAD,EAAOC,QAJP,WACE,OAAO,CACT,kBCfA,IAAIuvB,EAAW,EAAQ,MAyCvBxvB,EAAOC,QAZP,SAAkB2F,GAChB,OAAKA,EA3BQ,YA8BbA,EAAQ4pB,EAAS5pB,KACSA,KAAU,IA9BpB,uBA+BFA,EAAQ,GAAK,EAAI,GAGxBA,GAAUA,EAAQA,EAAQ,EAPd,IAAVA,EAAcA,EAAQ,CAQjC,iBCvCA,IAAI6pB,EAAW,EAAQ,MAmCvBzvB,EAAOC,QAPP,SAAmB2F,GACjB,IAAIY,EAASipB,EAAS7pB,GAClB8pB,EAAYlpB,EAAS,EAEzB,OAAOA,GAAWA,EAAUkpB,EAAYlpB,EAASkpB,EAAYlpB,EAAU,CACzE,kBCjCA,IAAImpB,EAAW,EAAQ,MACnBrM,EAAW,EAAQ,MACnByC,EAAW,EAAQ,MAMnB6J,EAAa,qBAGbC,EAAa,aAGbC,EAAY,cAGZC,EAAevf,SA8CnBxQ,EAAOC,QArBP,SAAkB2F,GAChB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAAImgB,EAASngB,GACX,OA1CM,IA4CR,GAAI0d,EAAS1d,GAAQ,CACnB,IAAI2b,EAAgC,mBAAjB3b,EAAM0iB,QAAwB1iB,EAAM0iB,UAAY1iB,EACnEA,EAAQ0d,EAAS/B,GAAUA,EAAQ,GAAMA,CAC3C,CACA,GAAoB,iBAAT3b,EACT,OAAiB,IAAVA,EAAcA,GAASA,EAEhCA,EAAQ+pB,EAAS/pB,GACjB,IAAIoqB,EAAWH,EAAW/gB,KAAKlJ,GAC/B,OAAQoqB,GAAYF,EAAUhhB,KAAKlJ,GAC/BmqB,EAAanqB,EAAM4I,MAAM,GAAIwhB,EAAW,EAAI,GAC3CJ,EAAW9gB,KAAKlJ,GAvDb,KAuD6BA,CACvC,kBC7DA,IAAIsgB,EAAe,EAAQ,KA2B3BlmB,EAAOC,QAJP,SAAkB2F,GAChB,OAAgB,MAATA,EAAgB,GAAKsgB,EAAatgB,EAC3C,kBCzBA,IAAIqqB,EAAa,EAAQ,MACrBxe,EAAO,EAAQ,MAgCnBzR,EAAOC,QAJP,SAAgBqgB,GACd,OAAiB,MAAVA,EAAiB,GAAK2P,EAAW3P,EAAQ7O,EAAK6O,GACvD,+BC7BA,IAAI4P,EAAK,EAAQ,MACbC,EAAM,EAAQ,MACdC,EAAQ,EAAQ,MAEpB,MAAMC,EAA2B7f,SAAS,wBAAY6f,2BAA6B,IAC7EC,EAAuG,MAA1D,wBAAYA,2CAE/D,SAASC,EAAO1Y,GACd,OAAOA,GAAKA,EAAE2Y,GAChB,CAEA,SAASC,EAAUC,EAAK7Y,GAOtB,OAFAA,EAAE2Y,IAAIG,MAAM,OAAO7E,SAJnB,SAAmB0E,GACjBE,EAAIF,GAAOJ,EAAMvY,EAAG,CAAE2Y,IAAKA,GAC7B,IAIOE,CACT,CAEA,SAASE,EAAeF,EAAK7c,GAE3B,IAAIgd,EAAIhd,EAAExT,MAAM,6BAEhB,OADIwwB,IAAGH,EAAIG,EAAE,IAAMA,EAAE,IACdH,CACT,CAEA,SAASI,EAAUC,GACjB,IACE,IAAIF,EAAaE,EAAK1wB,MAAM,kBACxB2wB,EAAaH,EAAE,GACfvoB,EAAauoB,EAAE,GAAGF,MAAM,KACxBM,EAAad,EAAIvb,MAAMoc,GACvBE,EAAahB,EAAGtb,MAAMqc,EAAUE,OAEpC7oB,EAAM8oB,QAEN,IAAIrW,EAAOzS,EACR+oB,OAAOT,EAAe,CAAC,GAI1B,OAFA7V,EAAOqV,EAAMc,EAAKnW,IACboV,IAAMa,EACJjW,CAGT,CAFE,MAAO1Z,GACP,OAAO,IACT,CACF,CAeArB,EAAOC,QAAU,SAAUqxB,GACzB,OAdF,SAAqBA,GACnB,IAAKA,EAAY,OAAO,EAExB,GAAIA,EAAW5wB,OAAS2vB,EAA0B,CAChD,GAAIC,EACF,MAAM,IAAIvuB,MAAM,6CAA+CsuB,EAA2B,gBAExF,OAAO,CAEb,CACA,OAAO,CACT,CAGOkB,CAAYD,GAEVA,EAAWX,MAAM,SACtBlH,IAAIqH,GACJU,OAAOjB,GACPc,OAAOZ,EAAU,CAAC,GALiB,IAMvC,wBCvEA,iBACE,SAAS1D,GAGsC9sB,GAC9CA,EAAQisB,SACoClsB,GAC5CA,EAAOksB,SAHT,IAII9C,EAA8B,iBAAV,EAAAC,GAAsB,EAAAA,EAE7CD,EAAWnoB,SAAWmoB,GACtBA,EAAWpoB,SAAWooB,GACtBA,EAAWloB,KAUZ,IAAIuwB,EAGJC,EAAS,WAGTC,EAAO,GAUPC,EAAgB,QAChBC,EAAgB,eAChBC,EAAkB,4BAGlBC,EAAS,CACR,SAAY,kDACZ,YAAa,iDACb,gBAAiB,iBAKlBC,EAAQrF,KAAKqF,MACbC,EAAqBtoB,OAAOuoB,aAa5B,SAASprB,EAAMmC,GACd,MAAMkpB,WAAWJ,EAAO9oB,GACzB,CAUA,SAASwgB,EAAI9R,EAAOya,GAGnB,IAFA,IAAI1xB,EAASiX,EAAMjX,OACf8F,EAAS,GACN9F,KACN8F,EAAO9F,GAAU0xB,EAAGza,EAAMjX,IAE3B,OAAO8F,CACR,CAYA,SAAS6rB,EAAUnyB,EAAQkyB,GAC1B,IAAI9pB,EAAQpI,EAAOywB,MAAM,KACrBnqB,EAAS,GAWb,OAVI8B,EAAM5H,OAAS,IAGlB8F,EAAS8B,EAAM,GAAK,IACpBpI,EAASoI,EAAM,IAMT9B,EADOijB,GAFdvpB,EAASA,EAAOga,QAAQ4X,EAAiB,MACrBnB,MAAM,KACAyB,GAAIE,KAAK,IAEpC,CAeA,SAASC,EAAWryB,GAMnB,IALA,IAGI0F,EACA4sB,EAJAC,EAAS,GACTC,EAAU,EACVhyB,EAASR,EAAOQ,OAGbgyB,EAAUhyB,IAChBkF,EAAQ1F,EAAOS,WAAW+xB,OACb,OAAU9sB,GAAS,OAAU8sB,EAAUhyB,EAG3B,QAAX,OADb8xB,EAAQtyB,EAAOS,WAAW+xB,OAEzBD,EAAOpuB,OAAe,KAARuB,IAAkB,KAAe,KAAR4sB,GAAiB,QAIxDC,EAAOpuB,KAAKuB,GACZ8sB,KAGDD,EAAOpuB,KAAKuB,GAGd,OAAO6sB,CACR,CAUA,SAASE,EAAWhb,GACnB,OAAO8R,EAAI9R,GAAO,SAAS/R,GAC1B,IAAI6sB,EAAS,GAOb,OANI7sB,EAAQ,QAEX6sB,GAAUR,GADVrsB,GAAS,SAC8B,GAAK,KAAQ,OACpDA,EAAQ,MAAiB,KAARA,GAElB6sB,EAAUR,EAAmBrsB,EAE9B,IAAG0sB,KAAK,GACT,CAmCA,SAASM,EAAaC,EAAOC,GAG5B,OAAOD,EAAQ,GAAK,IAAMA,EAAQ,MAAgB,GAARC,IAAc,EACzD,CAOA,SAASC,EAAMC,EAAOC,EAAWC,GAChC,IAAIxkB,EAAI,EAGR,IAFAskB,EAAQE,EAAYlB,EAAMgB,EA1LpB,KA0LoCA,GAAS,EACnDA,GAAShB,EAAMgB,EAAQC,GACOD,EAAQG,IAA2BzkB,GAAKijB,EACrEqB,EAAQhB,EAAMgB,EA3KArB,IA6Kf,OAAOK,EAAMtjB,EAAI,GAAsBskB,GAASA,EAhM1C,IAiMP,CASA,SAASI,EAAOC,GAEf,IAEI1sB,EAIA2sB,EACA/kB,EACA/N,EACA+yB,EACAC,EACA9kB,EACAmkB,EACAvxB,EAEAmyB,EArEiBC,EAsDjBjB,EAAS,GACTkB,EAAcN,EAAM3yB,OAEpBoB,EAAI,EACJP,EA7MM,IA8MNqyB,EA/MS,GAoOb,KALAN,EAAQD,EAAMQ,YA7NH,MA8NC,IACXP,EAAQ,GAGJ/kB,EAAI,EAAGA,EAAI+kB,IAAS/kB,EAEpB8kB,EAAM1yB,WAAW4N,IAAM,KAC1BzH,EAAM,aAEP2rB,EAAOpuB,KAAKgvB,EAAM1yB,WAAW4N,IAM9B,IAAK/N,EAAQ8yB,EAAQ,EAAIA,EAAQ,EAAI,EAAG9yB,EAAQmzB,GAAwC,CAOvF,IAAKJ,EAAOzxB,EAAG0xB,EAAI,EAAG9kB,EAAIijB,EAErBnxB,GAASmzB,GACZ7sB,EAAM,mBAGP+rB,GAxGmBa,EAwGEL,EAAM1yB,WAAWH,MAvGxB,GAAK,GACbkzB,EAAY,GAEhBA,EAAY,GAAK,GACbA,EAAY,GAEhBA,EAAY,GAAK,GACbA,EAAY,GAEb/B,IAgGQA,GAAQkB,EAAQb,GAAON,EAAS5vB,GAAK0xB,KACjD1sB,EAAM,YAGPhF,GAAK+wB,EAAQW,IAGTX,GAFJvxB,EAAIoN,GAAKklB,EAvQL,EAuQoBllB,GAAKklB,EAtQzB,MAsQ8CllB,EAAIklB,IAbHllB,GAAKijB,EAoBpD6B,EAAIxB,EAAMN,GADd+B,EAAa9B,EAAOrwB,KAEnBwF,EAAM,YAGP0sB,GAAKC,EAKNG,EAAOb,EAAMjxB,EAAIyxB,EADjB5sB,EAAM8rB,EAAO/xB,OAAS,EACc,GAAR6yB,GAIxBvB,EAAMlwB,EAAI6E,GAAO+qB,EAASnwB,GAC7BuF,EAAM,YAGPvF,GAAKywB,EAAMlwB,EAAI6E,GACf7E,GAAK6E,EAGL8rB,EAAO7G,OAAO9pB,IAAK,EAAGP,EAEvB,CAEA,OAAOoxB,EAAWF,EACnB,CASA,SAASqB,EAAOT,GACf,IAAI9xB,EACAyxB,EACAe,EACAC,EACAJ,EACArlB,EACAsiB,EACAoD,EACAvlB,EACApN,EACA4yB,EAGAP,EAEAQ,EACAV,EACAW,EANA3B,EAAS,GAoBb,IARAkB,GAHAN,EAAQd,EAAWc,IAGC3yB,OAGpBa,EAvUU,IAwUVyxB,EAAQ,EACRY,EA1Ua,GA6URrlB,EAAI,EAAGA,EAAIolB,IAAeplB,GAC9B2lB,EAAeb,EAAM9kB,IACF,KAClBkkB,EAAOpuB,KAAK4tB,EAAmBiC,IAejC,IAXAH,EAAiBC,EAAcvB,EAAO/xB,OAMlCszB,GACHvB,EAAOpuB,KAzVG,KA6VJ0vB,EAAiBJ,GAAa,CAIpC,IAAK9C,EAAIa,EAAQnjB,EAAI,EAAGA,EAAIolB,IAAeplB,GAC1C2lB,EAAeb,EAAM9kB,KACDhN,GAAK2yB,EAAerD,IACvCA,EAAIqD,GAcN,IAPIrD,EAAItvB,EAAIywB,GAAON,EAASsB,IAD5BmB,EAAwBJ,EAAiB,KAExCjtB,EAAM,YAGPksB,IAAUnC,EAAItvB,GAAK4yB,EACnB5yB,EAAIsvB,EAECtiB,EAAI,EAAGA,EAAIolB,IAAeplB,EAO9B,IANA2lB,EAAeb,EAAM9kB,IAEFhN,KAAOyxB,EAAQtB,GACjC5qB,EAAM,YAGHotB,GAAgB3yB,EAAG,CAEtB,IAAK0yB,EAAIjB,EAAOtkB,EAAIijB,IAEfsC,GADJ3yB,EAAIoN,GAAKklB,EAlYP,EAkYsBllB,GAAKklB,EAjY3B,MAiYgDllB,EAAIklB,IADTllB,GAAKijB,EAKlDyC,EAAUH,EAAI3yB,EACdmyB,EAAa9B,EAAOrwB,EACpBmxB,EAAOpuB,KACN4tB,EAAmBW,EAAatxB,EAAI8yB,EAAUX,EAAY,KAE3DQ,EAAIjC,EAAMoC,EAAUX,GAGrBhB,EAAOpuB,KAAK4tB,EAAmBW,EAAaqB,EAAG,KAC/CL,EAAOb,EAAMC,EAAOmB,EAAuBJ,GAAkBC,GAC7DhB,EAAQ,IACNe,CACH,GAGCf,IACAzxB,CAEH,CACA,OAAOkxB,EAAOH,KAAK,GACpB,CA2CAb,EAAW,CAMV,QAAW,QAQX,KAAQ,CACP,OAAUc,EACV,OAAUI,GAEX,OAAUS,EACV,OAAUU,EACV,QA/BD,SAAiBT,GAChB,OAAOhB,EAAUgB,GAAO,SAASnzB,GAChC,OAAO2xB,EAAc/iB,KAAK5O,GACvB,OAAS4zB,EAAO5zB,GAChBA,CACJ,GACD,EA0BC,UAnDD,SAAmBmzB,GAClB,OAAOhB,EAAUgB,GAAO,SAASnzB,GAChC,OAAO0xB,EAAc9iB,KAAK5O,GACvBkzB,EAAOlzB,EAAOsO,MAAM,GAAG6lB,eACvBn0B,CACJ,GACD,QA0DE,KAFD,aACC,OAAOuxB,CACP,+BAaH,CAhhBC,0BCyBD,SAASrY,EAAenT,EAAKquB,GAC3B,OAAOptB,OAAON,UAAUwS,eAAelX,KAAK+D,EAAKquB,EACnD,CAEAt0B,EAAOC,QAAU,SAASiwB,EAAIqE,EAAK/U,EAAIrR,GACrComB,EAAMA,GAAO,IACb/U,EAAKA,GAAM,IACX,IAAIvZ,EAAM,CAAC,EAEX,GAAkB,iBAAPiqB,GAAiC,IAAdA,EAAGxvB,OAC/B,OAAOuF,EAGT,IAAIuuB,EAAS,MACbtE,EAAKA,EAAGS,MAAM4D,GAEd,IAAIE,EAAU,IACVtmB,GAAsC,iBAApBA,EAAQsmB,UAC5BA,EAAUtmB,EAAQsmB,SAGpB,IAAItwB,EAAM+rB,EAAGxvB,OAET+zB,EAAU,GAAKtwB,EAAMswB,IACvBtwB,EAAMswB,GAGR,IAAK,IAAI3yB,EAAI,EAAGA,EAAIqC,IAAOrC,EAAG,CAC5B,IAEI4yB,EAAMC,EAAMjmB,EAAGkmB,EAFf/c,EAAIqY,EAAGpuB,GAAGoY,QAAQsa,EAAQ,OAC1BK,EAAMhd,EAAEzI,QAAQoQ,GAGhBqV,GAAO,GACTH,EAAO7c,EAAEid,OAAO,EAAGD,GACnBF,EAAO9c,EAAEid,OAAOD,EAAM,KAEtBH,EAAO7c,EACP8c,EAAO,IAGTjmB,EAAIqmB,mBAAmBL,GACvBE,EAAIG,mBAAmBJ,GAElBvb,EAAenT,EAAKyI,GAEdrH,MAAM2Q,QAAQ/R,EAAIyI,IAC3BzI,EAAIyI,GAAGrK,KAAKuwB,GAEZ3uB,EAAIyI,GAAK,CAACzI,EAAIyI,GAAIkmB,GAJlB3uB,EAAIyI,GAAKkmB,CAMb,CAEA,OAAO3uB,CACT,yBCxDA,IAAI+uB,EAAqB,SAASJ,GAChC,cAAeA,GACb,IAAK,SACH,OAAOA,EAET,IAAK,UACH,OAAOA,EAAI,OAAS,QAEtB,IAAK,SACH,OAAOK,SAASL,GAAKA,EAAI,GAE3B,QACE,MAAO,GAEb,EAEA50B,EAAOC,QAAU,SAASgG,EAAKsuB,EAAK/U,EAAI/W,GAOtC,OANA8rB,EAAMA,GAAO,IACb/U,EAAKA,GAAM,IACC,OAARvZ,IACFA,OAAM0H,GAGW,iBAAR1H,EACFiB,OAAOuK,KAAKxL,GAAKwjB,KAAI,SAAS/a,GACnC,IAAIwmB,EAAKC,mBAAmBH,EAAmBtmB,IAAM8Q,EACrD,OAAInY,MAAM2Q,QAAQ/R,EAAIyI,IACbzI,EAAIyI,GAAG+a,KAAI,SAASmL,GACzB,OAAOM,EAAKC,mBAAmBH,EAAmBJ,GACpD,IAAGtC,KAAKiC,GAEDW,EAAKC,mBAAmBH,EAAmB/uB,EAAIyI,IAE1D,IAAG4jB,KAAKiC,GAIL9rB,EACE0sB,mBAAmBH,EAAmBvsB,IAAS+W,EAC/C2V,mBAAmBH,EAAmB/uB,IAF3B,EAGpB,+BC7DAhG,EAAQmzB,OAASnzB,EAAQ2U,MAAQ,EAAhB,MACjB3U,EAAQ6zB,OAAS7zB,EAAQyU,UAAY,EAApB,mCCoBjB,IAAI+c,EAAW,EAAQ,MACnB2D,EAAO,EAAQ,MASnB,SAASC,IACPl0B,KAAKm0B,SAAW,KAChBn0B,KAAKo0B,QAAU,KACfp0B,KAAKq0B,KAAO,KACZr0B,KAAKs0B,KAAO,KACZt0B,KAAKu0B,KAAO,KACZv0B,KAAKw0B,SAAW,KAChBx0B,KAAKy0B,KAAO,KACZz0B,KAAK00B,OAAS,KACd10B,KAAKgwB,MAAQ,KACbhwB,KAAK20B,SAAW,KAChB30B,KAAKsf,KAAO,KACZtf,KAAK40B,KAAO,IACd,CApBA91B,EAAQ2U,MAAQohB,EAChB/1B,EAAQ8F,QA0ZR,SAAoB+c,EAAQmT,GAC1B,OAAOD,EAASlT,GAAQ,GAAO,GAAM/c,QAAQkwB,EAC/C,EA3ZAh2B,EAAQi2B,cAiaR,SAA0BpT,EAAQmT,GAChC,OAAKnT,EACEkT,EAASlT,GAAQ,GAAO,GAAMoT,cAAcD,GAD/BA,CAEtB,EAnaAh2B,EAAQk2B,OAsVR,SAAmBlwB,GAMjB,OADImvB,EAAK9G,SAASroB,KAAMA,EAAM+vB,EAAS/vB,IACjCA,aAAeovB,EACdpvB,EAAIkwB,SADuBd,EAAIzuB,UAAUuvB,OAAOj0B,KAAK+D,EAE9D,EA5VAhG,EAAQo1B,IAAMA,EAqBd,IAAIe,EAAkB,oBAClBC,EAAc,WAGdC,EAAoB,qCAOpBC,EAAS,CAAC,IAAK,IAAK,IAAK,KAAM,IAAK,KAAK5d,OAHhC,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,OAM/C6d,EAAa,CAAC,KAAM7d,OAAO4d,GAK3BE,EAAe,CAAC,IAAK,IAAK,IAAK,IAAK,KAAK9d,OAAO6d,GAChDE,EAAkB,CAAC,IAAK,IAAK,KAE7BC,EAAsB,yBACtBC,EAAoB,+BAEpBC,EAAiB,CACf,YAAc,EACd,eAAe,GAGjBC,EAAmB,CACjB,YAAc,EACd,eAAe,GAGjBC,EAAkB,CAChB,MAAQ,EACR,OAAS,EACT,KAAO,EACP,QAAU,EACV,MAAQ,EACR,SAAS,EACT,UAAU,EACV,QAAQ,EACR,WAAW,EACX,SAAS,GAEXC,EAAc,EAAQ,MAE1B,SAAShB,EAAS7F,EAAK8G,EAAkBC,GACvC,GAAI/G,GAAOiF,EAAK9R,SAAS6M,IAAQA,aAAekF,EAAK,OAAOlF,EAE5D,IAAIxuB,EAAI,IAAI0zB,EAEZ,OADA1zB,EAAEiT,MAAMub,EAAK8G,EAAkBC,GACxBv1B,CACT,CAEA0zB,EAAIzuB,UAAUgO,MAAQ,SAASub,EAAK8G,EAAkBC,GACpD,IAAK9B,EAAK9G,SAAS6B,GACjB,MAAM,IAAIrrB,UAAU,gDAAkDqrB,GAMxE,IAAIgH,EAAahH,EAAI/gB,QAAQ,KACzBgoB,GACqB,IAAhBD,GAAqBA,EAAahH,EAAI/gB,QAAQ,KAAQ,IAAM,IACjEioB,EAASlH,EAAIQ,MAAMyG,GAEvBC,EAAO,GAAKA,EAAO,GAAGnd,QADL,MACyB,KAG1C,IAAIod,EAFJnH,EAAMkH,EAAO/E,KAAK8E,GAQlB,GAFAE,EAAOA,EAAKC,QAEPL,GAA+C,IAA1B/G,EAAIQ,MAAM,KAAKjwB,OAAc,CAErD,IAAI82B,EAAalB,EAAkBh2B,KAAKg3B,GACxC,GAAIE,EAeF,OAdAr2B,KAAKsf,KAAO6W,EACZn2B,KAAK40B,KAAOuB,EACZn2B,KAAK20B,SAAW0B,EAAW,GACvBA,EAAW,IACbr2B,KAAK00B,OAAS2B,EAAW,GAEvBr2B,KAAKgwB,MADH8F,EACWD,EAAYpiB,MAAMzT,KAAK00B,OAAOf,OAAO,IAErC3zB,KAAK00B,OAAOf,OAAO,IAEzBmC,IACT91B,KAAK00B,OAAS,GACd10B,KAAKgwB,MAAQ,CAAC,GAEThwB,IAEX,CAEA,IAAIs2B,EAAQrB,EAAgB91B,KAAKg3B,GACjC,GAAIG,EAAO,CAET,IAAIC,GADJD,EAAQA,EAAM,IACSpD,cACvBlzB,KAAKm0B,SAAWoC,EAChBJ,EAAOA,EAAKxC,OAAO2C,EAAM/2B,OAC3B,CAMA,GAAIw2B,GAAqBO,GAASH,EAAKj3B,MAAM,wBAAyB,CACpE,IAAIk1B,EAAgC,OAAtB+B,EAAKxC,OAAO,EAAG,IACzBS,GAAakC,GAASX,EAAiBW,KACzCH,EAAOA,EAAKxC,OAAO,GACnB3zB,KAAKo0B,SAAU,EAEnB,CAEA,IAAKuB,EAAiBW,KACjBlC,GAAYkC,IAAUV,EAAgBU,IAAU,CAmBnD,IADA,IASIjC,EAAMmC,EATNC,GAAW,EACN91B,EAAI,EAAGA,EAAI40B,EAAgBh2B,OAAQoB,KAE7B,KADT+1B,EAAMP,EAAKloB,QAAQsnB,EAAgB50B,QACP,IAAb81B,GAAkBC,EAAMD,KACzCA,EAAUC,GAyBd,KARgB,KATdF,GAFe,IAAbC,EAEON,EAAKzD,YAAY,KAIjByD,EAAKzD,YAAY,IAAK+D,MAM/BpC,EAAO8B,EAAK9oB,MAAM,EAAGmpB,GACrBL,EAAOA,EAAK9oB,MAAMmpB,EAAS,GAC3Bx2B,KAAKq0B,KAAOT,mBAAmBS,IAIjCoC,GAAW,EACF91B,EAAI,EAAGA,EAAI20B,EAAa/1B,OAAQoB,IAAK,CAC5C,IAAI+1B,GACS,KADTA,EAAMP,EAAKloB,QAAQqnB,EAAa30B,QACJ,IAAb81B,GAAkBC,EAAMD,KACzCA,EAAUC,EACd,EAEiB,IAAbD,IACFA,EAAUN,EAAK52B,QAEjBS,KAAKs0B,KAAO6B,EAAK9oB,MAAM,EAAGopB,GAC1BN,EAAOA,EAAK9oB,MAAMopB,GAGlBz2B,KAAK22B,YAIL32B,KAAKw0B,SAAWx0B,KAAKw0B,UAAY,GAIjC,IAAIoC,EAAoC,MAArB52B,KAAKw0B,SAAS,IACe,MAA5Cx0B,KAAKw0B,SAASx0B,KAAKw0B,SAASj1B,OAAS,GAGzC,IAAKq3B,EAEH,IADA,IAAIC,EAAY72B,KAAKw0B,SAAShF,MAAM,MACpB1uB,GAAPH,EAAI,EAAOk2B,EAAUt3B,QAAQoB,EAAIG,EAAGH,IAAK,CAChD,IAAIm2B,EAAOD,EAAUl2B,GACrB,GAAKm2B,IACAA,EAAK53B,MAAMs2B,GAAsB,CAEpC,IADA,IAAIuB,EAAU,GACL3pB,EAAI,EAAGG,EAAIupB,EAAKv3B,OAAQ6N,EAAIG,EAAGH,IAClC0pB,EAAKt3B,WAAW4N,GAAK,IAIvB2pB,GAAW,IAEXA,GAAWD,EAAK1pB,GAIpB,IAAK2pB,EAAQ73B,MAAMs2B,GAAsB,CACvC,IAAIwB,EAAaH,EAAUxpB,MAAM,EAAG1M,GAChCs2B,EAAUJ,EAAUxpB,MAAM1M,EAAI,GAC9Bu2B,EAAMJ,EAAK53B,MAAMu2B,GACjByB,IACFF,EAAW9zB,KAAKg0B,EAAI,IACpBD,EAAQE,QAAQD,EAAI,KAElBD,EAAQ13B,SACV42B,EAAO,IAAMc,EAAQ9F,KAAK,KAAOgF,GAEnCn2B,KAAKw0B,SAAWwC,EAAW7F,KAAK,KAChC,KACF,CACF,CACF,CAGEnxB,KAAKw0B,SAASj1B,OAjND,IAkNfS,KAAKw0B,SAAW,GAGhBx0B,KAAKw0B,SAAWx0B,KAAKw0B,SAAStB,cAG3B0D,IAKH52B,KAAKw0B,SAAWlE,EAAS8G,QAAQp3B,KAAKw0B,WAGxC,IAAI9hB,EAAI1S,KAAKu0B,KAAO,IAAMv0B,KAAKu0B,KAAO,GAClC8C,EAAIr3B,KAAKw0B,UAAY,GACzBx0B,KAAKs0B,KAAO+C,EAAI3kB,EAChB1S,KAAK40B,MAAQ50B,KAAKs0B,KAIdsC,IACF52B,KAAKw0B,SAAWx0B,KAAKw0B,SAASb,OAAO,EAAG3zB,KAAKw0B,SAASj1B,OAAS,GAC/C,MAAZ42B,EAAK,KACPA,EAAO,IAAMA,GAGnB,CAIA,IAAKT,EAAea,GAKlB,IAAS51B,EAAI,EAAGG,EAAIu0B,EAAW91B,OAAQoB,EAAIG,EAAGH,IAAK,CACjD,IAAI22B,EAAKjC,EAAW10B,GACpB,IAA0B,IAAtBw1B,EAAKloB,QAAQqpB,GAAjB,CAEA,IAAIC,EAAMvD,mBAAmBsD,GACzBC,IAAQD,IACVC,EAAMv4B,OAAOs4B,IAEfnB,EAAOA,EAAK3G,MAAM8H,GAAInG,KAAKoG,EALjB,CAMZ,CAKF,IAAI9C,EAAO0B,EAAKloB,QAAQ,MACV,IAAVwmB,IAEFz0B,KAAKy0B,KAAO0B,EAAKxC,OAAOc,GACxB0B,EAAOA,EAAK9oB,MAAM,EAAGonB,IAEvB,IAAI+C,EAAKrB,EAAKloB,QAAQ,KAoBtB,IAnBY,IAARupB,GACFx3B,KAAK00B,OAASyB,EAAKxC,OAAO6D,GAC1Bx3B,KAAKgwB,MAAQmG,EAAKxC,OAAO6D,EAAK,GAC1B1B,IACF91B,KAAKgwB,MAAQ6F,EAAYpiB,MAAMzT,KAAKgwB,QAEtCmG,EAAOA,EAAK9oB,MAAM,EAAGmqB,IACZ1B,IAET91B,KAAK00B,OAAS,GACd10B,KAAKgwB,MAAQ,CAAC,GAEZmG,IAAMn2B,KAAK20B,SAAWwB,GACtBP,EAAgBW,IAChBv2B,KAAKw0B,WAAax0B,KAAK20B,WACzB30B,KAAK20B,SAAW,KAId30B,KAAK20B,UAAY30B,KAAK00B,OAAQ,CAC5BhiB,EAAI1S,KAAK20B,UAAY,GAAzB,IACIr0B,EAAIN,KAAK00B,QAAU,GACvB10B,KAAKsf,KAAO5M,EAAIpS,CAClB,CAIA,OADAN,KAAK40B,KAAO50B,KAAKg1B,SACVh1B,IACT,EAaAk0B,EAAIzuB,UAAUuvB,OAAS,WACrB,IAAIX,EAAOr0B,KAAKq0B,MAAQ,GACpBA,IAEFA,GADAA,EAAOL,mBAAmBK,IACdtb,QAAQ,OAAQ,KAC5Bsb,GAAQ,KAGV,IAAIF,EAAWn0B,KAAKm0B,UAAY,GAC5BQ,EAAW30B,KAAK20B,UAAY,GAC5BF,EAAOz0B,KAAKy0B,MAAQ,GACpBH,GAAO,EACPtE,EAAQ,GAERhwB,KAAKs0B,KACPA,EAAOD,EAAOr0B,KAAKs0B,KACVt0B,KAAKw0B,WACdF,EAAOD,IAAwC,IAAhCr0B,KAAKw0B,SAASvmB,QAAQ,KACjCjO,KAAKw0B,SACL,IAAMx0B,KAAKw0B,SAAW,KACtBx0B,KAAKu0B,OACPD,GAAQ,IAAMt0B,KAAKu0B,OAInBv0B,KAAKgwB,OACLiE,EAAK9R,SAASniB,KAAKgwB,QACnBjqB,OAAOuK,KAAKtQ,KAAKgwB,OAAOzwB,SAC1BywB,EAAQ6F,EAAYtiB,UAAUvT,KAAKgwB,QAGrC,IAAI0E,EAAS10B,KAAK00B,QAAW1E,GAAU,IAAMA,GAAW,GAsBxD,OApBImE,GAAoC,MAAxBA,EAASR,QAAQ,KAAYQ,GAAY,KAIrDn0B,KAAKo0B,WACHD,GAAYyB,EAAgBzB,MAAuB,IAATG,GAC9CA,EAAO,MAAQA,GAAQ,IACnBK,GAAmC,MAAvBA,EAAS9H,OAAO,KAAY8H,EAAW,IAAMA,IACnDL,IACVA,EAAO,IAGLG,GAA2B,MAAnBA,EAAK5H,OAAO,KAAY4H,EAAO,IAAMA,GAC7CC,GAA+B,MAArBA,EAAO7H,OAAO,KAAY6H,EAAS,IAAMA,GAOhDP,EAAWG,GALlBK,EAAWA,EAAS5b,QAAQ,SAAS,SAAS7Z,GAC5C,OAAO80B,mBAAmB90B,EAC5B,MACAw1B,EAASA,EAAO3b,QAAQ,IAAK,QAEgB0b,CAC/C,EAMAP,EAAIzuB,UAAUb,QAAU,SAASkwB,GAC/B,OAAO90B,KAAK+0B,cAAcF,EAASC,GAAU,GAAO,IAAOE,QAC7D,EAOAd,EAAIzuB,UAAUsvB,cAAgB,SAASD,GACrC,GAAIb,EAAK9G,SAAS2H,GAAW,CAC3B,IAAIzF,EAAM,IAAI6E,EACd7E,EAAI5b,MAAMqhB,GAAU,GAAO,GAC3BA,EAAWzF,CACb,CAIA,IAFA,IAAIhqB,EAAS,IAAI6uB,EACbuD,EAAQ1xB,OAAOuK,KAAKtQ,MACf03B,EAAK,EAAGA,EAAKD,EAAMl4B,OAAQm4B,IAAM,CACxC,IAAIC,EAAOF,EAAMC,GACjBryB,EAAOsyB,GAAQ33B,KAAK23B,EACtB,CAOA,GAHAtyB,EAAOovB,KAAOK,EAASL,KAGD,KAAlBK,EAASF,KAEX,OADAvvB,EAAOuvB,KAAOvvB,EAAO2vB,SACd3vB,EAIT,GAAIyvB,EAASV,UAAYU,EAASX,SAAU,CAG1C,IADA,IAAIyD,EAAQ7xB,OAAOuK,KAAKwkB,GACf+C,EAAK,EAAGA,EAAKD,EAAMr4B,OAAQs4B,IAAM,CACxC,IAAIC,EAAOF,EAAMC,GACJ,aAATC,IACFzyB,EAAOyyB,GAAQhD,EAASgD,GAC5B,CASA,OANIlC,EAAgBvwB,EAAO8uB,WACvB9uB,EAAOmvB,WAAanvB,EAAOsvB,WAC7BtvB,EAAOia,KAAOja,EAAOsvB,SAAW,KAGlCtvB,EAAOuvB,KAAOvvB,EAAO2vB,SACd3vB,CACT,CAEA,GAAIyvB,EAASX,UAAYW,EAASX,WAAa9uB,EAAO8uB,SAAU,CAS9D,IAAKyB,EAAgBd,EAASX,UAAW,CAEvC,IADA,IAAI7jB,EAAOvK,OAAOuK,KAAKwkB,GACdrB,EAAI,EAAGA,EAAInjB,EAAK/Q,OAAQk0B,IAAK,CACpC,IAAIlmB,EAAI+C,EAAKmjB,GACbpuB,EAAOkI,GAAKunB,EAASvnB,EACvB,CAEA,OADAlI,EAAOuvB,KAAOvvB,EAAO2vB,SACd3vB,CACT,CAGA,GADAA,EAAO8uB,SAAWW,EAASX,SACtBW,EAASR,MAASqB,EAAiBb,EAASX,UAS/C9uB,EAAOsvB,SAAWG,EAASH,aAT+B,CAE1D,IADA,IAAIoD,GAAWjD,EAASH,UAAY,IAAInF,MAAM,KACvCuI,EAAQx4B,UAAYu1B,EAASR,KAAOyD,EAAQ9H,WAC9C6E,EAASR,OAAMQ,EAASR,KAAO,IAC/BQ,EAASN,WAAUM,EAASN,SAAW,IACzB,KAAfuD,EAAQ,IAAWA,EAAQZ,QAAQ,IACnCY,EAAQx4B,OAAS,GAAGw4B,EAAQZ,QAAQ,IACxC9xB,EAAOsvB,SAAWoD,EAAQ5G,KAAK,IACjC,CAUA,GAPA9rB,EAAOqvB,OAASI,EAASJ,OACzBrvB,EAAO2qB,MAAQ8E,EAAS9E,MACxB3qB,EAAOivB,KAAOQ,EAASR,MAAQ,GAC/BjvB,EAAOgvB,KAAOS,EAAST,KACvBhvB,EAAOmvB,SAAWM,EAASN,UAAYM,EAASR,KAChDjvB,EAAOkvB,KAAOO,EAASP,KAEnBlvB,EAAOsvB,UAAYtvB,EAAOqvB,OAAQ,CACpC,IAAIhiB,EAAIrN,EAAOsvB,UAAY,GACvBr0B,EAAI+E,EAAOqvB,QAAU,GACzBrvB,EAAOia,KAAO5M,EAAIpS,CACpB,CAGA,OAFA+E,EAAO+uB,QAAU/uB,EAAO+uB,SAAWU,EAASV,QAC5C/uB,EAAOuvB,KAAOvvB,EAAO2vB,SACd3vB,CACT,CAEA,IAAI2yB,EAAe3yB,EAAOsvB,UAA0C,MAA9BtvB,EAAOsvB,SAAS9H,OAAO,GACzDoL,EACInD,EAASR,MACTQ,EAASH,UAA4C,MAAhCG,EAASH,SAAS9H,OAAO,GAElDqL,EAAcD,GAAYD,GACX3yB,EAAOivB,MAAQQ,EAASH,SACvCwD,EAAgBD,EAChBE,EAAU/yB,EAAOsvB,UAAYtvB,EAAOsvB,SAASnF,MAAM,MAAQ,GAE3D6I,GADAN,EAAUjD,EAASH,UAAYG,EAASH,SAASnF,MAAM,MAAQ,GACnDnqB,EAAO8uB,WAAayB,EAAgBvwB,EAAO8uB,WA2B3D,GApBIkE,IACFhzB,EAAOmvB,SAAW,GAClBnvB,EAAOkvB,KAAO,KACVlvB,EAAOivB,OACU,KAAf8D,EAAQ,GAAWA,EAAQ,GAAK/yB,EAAOivB,KACtC8D,EAAQjB,QAAQ9xB,EAAOivB,OAE9BjvB,EAAOivB,KAAO,GACVQ,EAASX,WACXW,EAASN,SAAW,KACpBM,EAASP,KAAO,KACZO,EAASR,OACQ,KAAfyD,EAAQ,GAAWA,EAAQ,GAAKjD,EAASR,KACxCyD,EAAQZ,QAAQrC,EAASR,OAEhCQ,EAASR,KAAO,MAElB4D,EAAaA,IAA8B,KAAfH,EAAQ,IAA4B,KAAfK,EAAQ,KAGvDH,EAEF5yB,EAAOivB,KAAQQ,EAASR,MAA0B,KAAlBQ,EAASR,KAC3BQ,EAASR,KAAOjvB,EAAOivB,KACrCjvB,EAAOmvB,SAAYM,EAASN,UAAkC,KAAtBM,EAASN,SAC/BM,EAASN,SAAWnvB,EAAOmvB,SAC7CnvB,EAAOqvB,OAASI,EAASJ,OACzBrvB,EAAO2qB,MAAQ8E,EAAS9E,MACxBoI,EAAUL,OAEL,GAAIA,EAAQx4B,OAGZ64B,IAASA,EAAU,IACxBA,EAAQ9uB,MACR8uB,EAAUA,EAAQ5gB,OAAOugB,GACzB1yB,EAAOqvB,OAASI,EAASJ,OACzBrvB,EAAO2qB,MAAQ8E,EAAS9E,WACnB,IAAKiE,EAAKqE,kBAAkBxD,EAASJ,QAwB1C,OApBI2D,IACFhzB,EAAOmvB,SAAWnvB,EAAOivB,KAAO8D,EAAQnI,SAIpCsI,KAAalzB,EAAOivB,MAAQjvB,EAAOivB,KAAKrmB,QAAQ,KAAO,IAC1C5I,EAAOivB,KAAK9E,MAAM,QAEjCnqB,EAAOgvB,KAAOkE,EAAWtI,QACzB5qB,EAAOivB,KAAOjvB,EAAOmvB,SAAW+D,EAAWtI,UAG/C5qB,EAAOqvB,OAASI,EAASJ,OACzBrvB,EAAO2qB,MAAQ8E,EAAS9E,MAEnBiE,EAAKuE,OAAOnzB,EAAOsvB,WAAcV,EAAKuE,OAAOnzB,EAAOqvB,UACvDrvB,EAAOia,MAAQja,EAAOsvB,SAAWtvB,EAAOsvB,SAAW,KACpCtvB,EAAOqvB,OAASrvB,EAAOqvB,OAAS,KAEjDrvB,EAAOuvB,KAAOvvB,EAAO2vB,SACd3vB,EAGT,IAAK+yB,EAAQ74B,OAWX,OARA8F,EAAOsvB,SAAW,KAEdtvB,EAAOqvB,OACTrvB,EAAOia,KAAO,IAAMja,EAAOqvB,OAE3BrvB,EAAOia,KAAO,KAEhBja,EAAOuvB,KAAOvvB,EAAO2vB,SACd3vB,EAcT,IARA,IAAIozB,EAAOL,EAAQ/qB,OAAO,GAAG,GACzBqrB,GACCrzB,EAAOivB,MAAQQ,EAASR,MAAQ8D,EAAQ74B,OAAS,KACxC,MAATk5B,GAAyB,OAATA,IAA2B,KAATA,EAInCE,EAAK,EACAh4B,EAAIy3B,EAAQ74B,OAAQoB,GAAK,EAAGA,IAEtB,OADb83B,EAAOL,EAAQz3B,IAEby3B,EAAQ3N,OAAO9pB,EAAG,GACA,OAAT83B,GACTL,EAAQ3N,OAAO9pB,EAAG,GAClBg4B,KACSA,IACTP,EAAQ3N,OAAO9pB,EAAG,GAClBg4B,KAKJ,IAAKT,IAAeC,EAClB,KAAOQ,IAAMA,EACXP,EAAQjB,QAAQ,OAIhBe,GAA6B,KAAfE,EAAQ,IACpBA,EAAQ,IAA+B,MAAzBA,EAAQ,GAAGvL,OAAO,IACpCuL,EAAQjB,QAAQ,IAGduB,GAAsD,MAAjCN,EAAQjH,KAAK,KAAKwC,QAAQ,IACjDyE,EAAQl1B,KAAK,IAGf,IAUMq1B,EAVFK,EAA4B,KAAfR,EAAQ,IACpBA,EAAQ,IAA+B,MAAzBA,EAAQ,GAAGvL,OAAO,GAsCrC,OAnCIwL,IACFhzB,EAAOmvB,SAAWnvB,EAAOivB,KAAOsE,EAAa,GACbR,EAAQ74B,OAAS64B,EAAQnI,QAAU,IAI/DsI,KAAalzB,EAAOivB,MAAQjvB,EAAOivB,KAAKrmB,QAAQ,KAAO,IAC1C5I,EAAOivB,KAAK9E,MAAM,QAEjCnqB,EAAOgvB,KAAOkE,EAAWtI,QACzB5qB,EAAOivB,KAAOjvB,EAAOmvB,SAAW+D,EAAWtI,WAI/CiI,EAAaA,GAAe7yB,EAAOivB,MAAQ8D,EAAQ74B,UAEhCq5B,GACjBR,EAAQjB,QAAQ,IAGbiB,EAAQ74B,OAIX8F,EAAOsvB,SAAWyD,EAAQjH,KAAK,MAH/B9rB,EAAOsvB,SAAW,KAClBtvB,EAAOia,KAAO,MAMX2U,EAAKuE,OAAOnzB,EAAOsvB,WAAcV,EAAKuE,OAAOnzB,EAAOqvB,UACvDrvB,EAAOia,MAAQja,EAAOsvB,SAAWtvB,EAAOsvB,SAAW,KACpCtvB,EAAOqvB,OAASrvB,EAAOqvB,OAAS,KAEjDrvB,EAAOgvB,KAAOS,EAAST,MAAQhvB,EAAOgvB,KACtChvB,EAAO+uB,QAAU/uB,EAAO+uB,SAAWU,EAASV,QAC5C/uB,EAAOuvB,KAAOvvB,EAAO2vB,SACd3vB,CACT,EAEA6uB,EAAIzuB,UAAUkxB,UAAY,WACxB,IAAIrC,EAAOt0B,KAAKs0B,KACZC,EAAOW,EAAY/1B,KAAKm1B,GACxBC,IAEW,OADbA,EAAOA,EAAK,MAEVv0B,KAAKu0B,KAAOA,EAAKZ,OAAO,IAE1BW,EAAOA,EAAKX,OAAO,EAAGW,EAAK/0B,OAASg1B,EAAKh1B,SAEvC+0B,IAAMt0B,KAAKw0B,SAAWF,EAC5B,yBCztBAz1B,EAAOC,QAAU,CACfquB,SAAU,SAASrW,GACjB,MAAuB,iBAAV,CACf,EACAqL,SAAU,SAASrL,GACjB,MAAuB,iBAAV,GAA8B,OAARA,CACrC,EACA0hB,OAAQ,SAAS1hB,GACf,OAAe,OAARA,CACT,EACAwhB,kBAAmB,SAASxhB,GAC1B,OAAc,MAAPA,CACT,aCdFjY,EAAOC,QAIP,WAGI,IAFA,IAAI8L,EAAS,CAAC,EAELjK,EAAI,EAAGA,EAAIsE,UAAU1F,OAAQoB,IAAK,CACvC,IAAIghB,EAAS1c,UAAUtE,GAEvB,IAAK,IAAI0H,KAAOsZ,EACR1J,EAAelX,KAAK4gB,EAAQtZ,KAC5BuC,EAAOvC,GAAOsZ,EAAOtZ,GAGjC,CAEA,OAAOuC,CACX,EAhBA,IAAIqN,EAAiBlS,OAAON,UAAUwS,+BCFtC,IAAIzR,EAAU,gBACd,SAASqyB,IACP,aACAh6B,EAAOC,QAAU+5B,EAAsB,WACrC,OAAO/5B,CACT,EAAGD,EAAOC,QAAQg6B,YAAa,EAAMj6B,EAAOC,QAAiB,QAAID,EAAOC,QACxE,IAAIA,EAAU,CAAC,EACbi6B,EAAKhzB,OAAON,UACZuzB,EAASD,EAAG9gB,eACZuM,EAAiBze,OAAOye,gBAAkB,SAAU1f,EAAKuD,EAAK4wB,GAC5Dn0B,EAAIuD,GAAO4wB,EAAKx0B,KAClB,EACAy0B,EAAU,mBAAqBzyB,OAASA,OAAS,CAAC,EAClD0yB,EAAiBD,EAAQxyB,UAAY,aACrC0yB,EAAsBF,EAAQG,eAAiB,kBAC/CC,EAAoBJ,EAAQtZ,aAAe,gBAC7C,SAASjgB,EAAOmF,EAAKuD,EAAK5D,GACxB,OAAOsB,OAAOye,eAAe1f,EAAKuD,EAAK,CACrC5D,MAAOA,EACP80B,YAAY,EACZC,cAAc,EACdC,UAAU,IACR30B,EAAIuD,EACV,CACA,IACE1I,EAAO,CAAC,EAAG,GAKb,CAJE,MAAO6J,GACP7J,EAAS,SAAgBmF,EAAKuD,EAAK5D,GACjC,OAAOK,EAAIuD,GAAO5D,CACpB,CACF,CACA,SAASi1B,EAAKC,EAASC,EAAS75B,EAAM85B,GACpC,IAAIC,EAAiBF,GAAWA,EAAQn0B,qBAAqBs0B,EAAYH,EAAUG,EACjFC,EAAYj0B,OAAOk0B,OAAOH,EAAer0B,WACzCy0B,EAAU,IAAIC,EAAQN,GAAe,IACvC,OAAOrV,EAAewV,EAAW,UAAW,CAC1Cv1B,MAAO21B,EAAiBT,EAAS55B,EAAMm6B,KACrCF,CACN,CACA,SAAS10B,EAAS2rB,EAAInsB,EAAKgS,GACzB,IACE,MAAO,CACLhP,KAAM,SACNgP,IAAKma,EAAGlwB,KAAK+D,EAAKgS,GAOtB,CALE,MAAOtN,GACP,MAAO,CACL1B,KAAM,QACNgP,IAAKtN,EAET,CACF,CACA1K,EAAQ46B,KAAOA,EACf,IAAIW,EAAmB,CAAC,EACxB,SAASN,IAAa,CACtB,SAASO,IAAqB,CAC9B,SAASC,IAA8B,CACvC,IAAIC,EAAoB,CAAC,EACzB76B,EAAO66B,EAAmBrB,GAAgB,WACxC,OAAOn5B,IACT,IACA,IAAIy6B,EAAW10B,OAAO20B,eACpBC,EAA0BF,GAAYA,EAASA,EAASx0B,EAAO,MACjE00B,GAA2BA,IAA4B5B,GAAMC,EAAOj4B,KAAK45B,EAAyBxB,KAAoBqB,EAAoBG,GAC1I,IAAIC,EAAKL,EAA2B90B,UAAYs0B,EAAUt0B,UAAYM,OAAOk0B,OAAOO,GACpF,SAASK,EAAsBp1B,GAC7B,CAAC,OAAQ,QAAS,UAAUklB,SAAQ,SAAUmQ,GAC5Cn7B,EAAO8F,EAAWq1B,GAAQ,SAAUhkB,GAClC,OAAO9W,KAAK+6B,QAAQD,EAAQhkB,EAC9B,GACF,GACF,CACA,SAASkkB,EAAchB,EAAWiB,GAChC,SAASC,EAAOJ,EAAQhkB,EAAKlS,EAASD,GACpC,IAAIw2B,EAAS71B,EAAS00B,EAAUc,GAASd,EAAWljB,GACpD,GAAI,UAAYqkB,EAAOrzB,KAAM,CAC3B,IAAIzC,EAAS81B,EAAOrkB,IAClBrS,EAAQY,EAAOZ,MACjB,OAAOA,GAAS,UAAY+B,EAAQ/B,IAAUu0B,EAAOj4B,KAAK0D,EAAO,WAAaw2B,EAAYr2B,QAAQH,EAAM22B,SAASr2B,MAAK,SAAUN,GAC9Hy2B,EAAO,OAAQz2B,EAAOG,EAASD,EACjC,IAAG,SAAU6E,GACX0xB,EAAO,QAAS1xB,EAAK5E,EAASD,EAChC,IAAKs2B,EAAYr2B,QAAQH,GAAOM,MAAK,SAAUs2B,GAC7Ch2B,EAAOZ,MAAQ42B,EAAWz2B,EAAQS,EACpC,IAAG,SAAUM,GACX,OAAOu1B,EAAO,QAASv1B,EAAOf,EAASD,EACzC,GACF,CACAA,EAAOw2B,EAAOrkB,IAChB,CACA,IAAIwkB,EACJ9W,EAAexkB,KAAM,UAAW,CAC9ByE,MAAO,SAAeq2B,EAAQhkB,GAC5B,SAASykB,IACP,OAAO,IAAIN,GAAY,SAAUr2B,EAASD,GACxCu2B,EAAOJ,EAAQhkB,EAAKlS,EAASD,EAC/B,GACF,CACA,OAAO22B,EAAkBA,EAAkBA,EAAgBv2B,KAAKw2B,EAA4BA,GAA8BA,GAC5H,GAEJ,CACA,SAASnB,EAAiBT,EAAS55B,EAAMm6B,GACvC,IAAIt2B,EAAQ,iBACZ,OAAO,SAAUk3B,EAAQhkB,GACvB,GAAI,cAAgBlT,EAAO,MAAM,IAAIhD,MAAM,gCAC3C,GAAI,cAAgBgD,EAAO,CACzB,GAAI,UAAYk3B,EAAQ,MAAMhkB,EAC9B,MA8EG,CACLrS,WAAO+H,EACPgvB,MAAM,EA/EN,CACA,IAAKtB,EAAQY,OAASA,EAAQZ,EAAQpjB,IAAMA,IAAO,CACjD,IAAI2kB,EAAWvB,EAAQuB,SACvB,GAAIA,EAAU,CACZ,IAAIC,EAAiBC,EAAoBF,EAAUvB,GACnD,GAAIwB,EAAgB,CAClB,GAAIA,IAAmBrB,EAAkB,SACzC,OAAOqB,CACT,CACF,CACA,GAAI,SAAWxB,EAAQY,OAAQZ,EAAQ0B,KAAO1B,EAAQ2B,MAAQ3B,EAAQpjB,SAAS,GAAI,UAAYojB,EAAQY,OAAQ,CAC7G,GAAI,mBAAqBl3B,EAAO,MAAMA,EAAQ,YAAas2B,EAAQpjB,IACnEojB,EAAQ4B,kBAAkB5B,EAAQpjB,IACpC,KAAO,WAAaojB,EAAQY,QAAUZ,EAAQ6B,OAAO,SAAU7B,EAAQpjB,KACvElT,EAAQ,YACR,IAAIu3B,EAAS71B,EAASq0B,EAAS55B,EAAMm6B,GACrC,GAAI,WAAaiB,EAAOrzB,KAAM,CAC5B,GAAIlE,EAAQs2B,EAAQsB,KAAO,YAAc,iBAAkBL,EAAOrkB,MAAQujB,EAAkB,SAC5F,MAAO,CACL51B,MAAO02B,EAAOrkB,IACd0kB,KAAMtB,EAAQsB,KAElB,CACA,UAAYL,EAAOrzB,OAASlE,EAAQ,YAAas2B,EAAQY,OAAS,QAASZ,EAAQpjB,IAAMqkB,EAAOrkB,IAClG,CACF,CACF,CACA,SAAS6kB,EAAoBF,EAAUvB,GACrC,IAAIY,EAASW,EAAS/0B,SAASwzB,EAAQY,QACvC,QAAItuB,IAAcsuB,EAAQ,CACxB,GAAIZ,EAAQuB,SAAW,KAAM,UAAYvB,EAAQY,OAAQ,CACvD,GAAIW,EAAS/0B,SAAiB,SAAMwzB,EAAQY,OAAS,SAAUZ,EAAQpjB,SAAMtK,EAAWmvB,EAAoBF,EAAUvB,GAAU,UAAYA,EAAQY,QAAS,OAAOT,EACpKH,EAAQY,OAAS,QAASZ,EAAQpjB,IAAM,IAAInT,UAAU,iDACxD,CACA,OAAO02B,CACT,CACA,IAAIc,EAAS71B,EAASw1B,EAAQW,EAAS/0B,SAAUwzB,EAAQpjB,KACzD,GAAI,UAAYqkB,EAAOrzB,KAAM,OAAOoyB,EAAQY,OAAS,QAASZ,EAAQpjB,IAAMqkB,EAAOrkB,IAAKojB,EAAQuB,SAAW,KAAMpB,EACjH,IAAIzgB,EAAOuhB,EAAOrkB,IAClB,OAAO8C,EAAOA,EAAK4hB,MAAQtB,EAAQuB,EAASO,YAAcpiB,EAAKnV,MAAOy1B,EAAQ+B,KAAOR,EAASS,QAAS,WAAahC,EAAQY,SAAWZ,EAAQY,OAAS,OAAQZ,EAAQpjB,SAAMtK,GAAY0tB,EAAQuB,SAAW,KAAMpB,GAAoBzgB,GAAQsgB,EAAQY,OAAS,QAASZ,EAAQpjB,IAAM,IAAInT,UAAU,oCAAqCu2B,EAAQuB,SAAW,KAAMpB,EACrW,CACA,SAAS8B,EAAaC,GACpB,IAAI5gB,EAAQ,CACV6gB,OAAQD,EAAK,IAEf,KAAKA,IAAS5gB,EAAM8gB,SAAWF,EAAK,IAAK,KAAKA,IAAS5gB,EAAM+gB,WAAaH,EAAK,GAAI5gB,EAAMghB,SAAWJ,EAAK,IAAKp8B,KAAKy8B,WAAWv5B,KAAKsY,EACrI,CACA,SAASkhB,EAAclhB,GACrB,IAAI2f,EAAS3f,EAAMmhB,YAAc,CAAC,EAClCxB,EAAOrzB,KAAO,gBAAiBqzB,EAAOrkB,IAAK0E,EAAMmhB,WAAaxB,CAChE,CACA,SAAShB,EAAQN,GACf75B,KAAKy8B,WAAa,CAAC,CACjBJ,OAAQ,SACNxC,EAAYlP,QAAQwR,EAAcn8B,MAAOA,KAAK48B,OAAM,EAC1D,CACA,SAAS32B,EAAOH,GACd,GAAIA,EAAU,CACZ,IAAI+2B,EAAiB/2B,EAASqzB,GAC9B,GAAI0D,EAAgB,OAAOA,EAAe97B,KAAK+E,GAC/C,GAAI,mBAAqBA,EAASm2B,KAAM,OAAOn2B,EAC/C,IAAK8Q,MAAM9Q,EAASvG,QAAS,CAC3B,IAAIoB,GAAK,EACPs7B,EAAO,SAASA,IACd,OAASt7B,EAAImF,EAASvG,QACpB,GAAIy5B,EAAOj4B,KAAK+E,EAAUnF,GAAI,OAAOs7B,EAAKx3B,MAAQqB,EAASnF,GAAIs7B,EAAKT,MAAO,EAAIS,EAEjF,OAAOA,EAAKx3B,WAAQ+H,EAAWyvB,EAAKT,MAAO,EAAIS,CACjD,EACF,OAAOA,EAAKA,KAAOA,CACrB,CACF,CACA,MAAO,CACLA,KAAMa,EAEV,CACA,SAASA,IACP,MAAO,CACLr4B,WAAO+H,EACPgvB,MAAM,EAEV,CACA,OAAOlB,EAAkB70B,UAAY80B,EAA4B/V,EAAeoW,EAAI,cAAe,CACjGn2B,MAAO81B,EACPf,cAAc,IACZhV,EAAe+V,EAA4B,cAAe,CAC5D91B,MAAO61B,EACPd,cAAc,IACZc,EAAkByC,YAAcp9B,EAAO46B,EAA4BjB,EAAmB,qBAAsBx6B,EAAQk+B,oBAAsB,SAAUC,GACtJ,IAAIC,EAAO,mBAAqBD,GAAUA,EAAOv3B,YACjD,QAASw3B,IAASA,IAAS5C,GAAqB,uBAAyB4C,EAAKH,aAAeG,EAAK51B,MACpG,EAAGxI,EAAQq+B,KAAO,SAAUF,GAC1B,OAAOl3B,OAAOq3B,eAAiBr3B,OAAOq3B,eAAeH,EAAQ1C,IAA+B0C,EAAOI,UAAY9C,EAA4B56B,EAAOs9B,EAAQ3D,EAAmB,sBAAuB2D,EAAOx3B,UAAYM,OAAOk0B,OAAOW,GAAKqC,CAC5O,EAAGn+B,EAAQw+B,MAAQ,SAAUxmB,GAC3B,MAAO,CACLskB,QAAStkB,EAEb,EAAG+jB,EAAsBG,EAAcv1B,WAAY9F,EAAOq7B,EAAcv1B,UAAW2zB,GAAqB,WACtG,OAAOp5B,IACT,IAAIlB,EAAQk8B,cAAgBA,EAAel8B,EAAQy+B,MAAQ,SAAU5D,EAASC,EAAS75B,EAAM85B,EAAaoB,QACxG,IAAWA,IAAgBA,EAAcx3B,SACzC,IAAI+5B,EAAO,IAAIxC,EAActB,EAAKC,EAASC,EAAS75B,EAAM85B,GAAcoB,GACxE,OAAOn8B,EAAQk+B,oBAAoBpD,GAAW4D,EAAOA,EAAKvB,OAAOl3B,MAAK,SAAUM,GAC9E,OAAOA,EAAOm2B,KAAOn2B,EAAOZ,MAAQ+4B,EAAKvB,MAC3C,GACF,EAAGpB,EAAsBD,GAAKj7B,EAAOi7B,EAAItB,EAAmB,aAAc35B,EAAOi7B,EAAIzB,GAAgB,WACnG,OAAOn5B,IACT,IAAIL,EAAOi7B,EAAI,YAAY,WACzB,MAAO,oBACT,IAAI97B,EAAQwR,KAAO,SAAUmtB,GAC3B,IAAIte,EAASpZ,OAAO03B,GAClBntB,EAAO,GACT,IAAK,IAAIjI,KAAO8W,EACd7O,EAAKpN,KAAKmF,GAEZ,OAAOiI,EAAKotB,UAAW,SAASzB,IAC9B,KAAO3rB,EAAK/Q,QAAS,CACnB,IAAI8I,EAAMiI,EAAKhH,MACf,GAAIjB,KAAO8W,EAAQ,OAAO8c,EAAKx3B,MAAQ4D,EAAK4zB,EAAKT,MAAO,EAAIS,CAC9D,CACA,OAAOA,EAAKT,MAAO,EAAIS,CACzB,CACF,EAAGn9B,EAAQmH,OAASA,EAAQk0B,EAAQ10B,UAAY,CAC9CC,YAAay0B,EACbyC,MAAO,SAAee,GACpB,GAAI39B,KAAK49B,KAAO,EAAG59B,KAAKi8B,KAAO,EAAGj8B,KAAK47B,KAAO57B,KAAK67B,WAAQrvB,EAAWxM,KAAKw7B,MAAO,EAAIx7B,KAAKy7B,SAAW,KAAMz7B,KAAK86B,OAAS,OAAQ96B,KAAK8W,SAAMtK,EAAWxM,KAAKy8B,WAAW9R,QAAQ+R,IAAiBiB,EAAe,IAAK,IAAIr2B,KAAQtH,KAC/N,MAAQsH,EAAKulB,OAAO,IAAMmM,EAAOj4B,KAAKf,KAAMsH,KAAUsP,OAAOtP,EAAK+F,MAAM,MAAQrN,KAAKsH,QAAQkF,EAEjG,EACAqxB,KAAM,WACJ79B,KAAKw7B,MAAO,EACZ,IAAIsC,EAAa99B,KAAKy8B,WAAW,GAAGE,WACpC,GAAI,UAAYmB,EAAWh2B,KAAM,MAAMg2B,EAAWhnB,IAClD,OAAO9W,KAAK+9B,IACd,EACAjC,kBAAmB,SAA2BkC,GAC5C,GAAIh+B,KAAKw7B,KAAM,MAAMwC,EACrB,IAAI9D,EAAUl6B,KACd,SAASi+B,EAAOC,EAAKC,GACnB,OAAOhD,EAAOrzB,KAAO,QAASqzB,EAAOrkB,IAAMknB,EAAW9D,EAAQ+B,KAAOiC,EAAKC,IAAWjE,EAAQY,OAAS,OAAQZ,EAAQpjB,SAAMtK,KAAc2xB,CAC5I,CACA,IAAK,IAAIx9B,EAAIX,KAAKy8B,WAAWl9B,OAAS,EAAGoB,GAAK,IAAKA,EAAG,CACpD,IAAI6a,EAAQxb,KAAKy8B,WAAW97B,GAC1Bw6B,EAAS3f,EAAMmhB,WACjB,GAAI,SAAWnhB,EAAM6gB,OAAQ,OAAO4B,EAAO,OAC3C,GAAIziB,EAAM6gB,QAAUr8B,KAAK49B,KAAM,CAC7B,IAAIQ,EAAWpF,EAAOj4B,KAAKya,EAAO,YAChC6iB,EAAarF,EAAOj4B,KAAKya,EAAO,cAClC,GAAI4iB,GAAYC,EAAY,CAC1B,GAAIr+B,KAAK49B,KAAOpiB,EAAM8gB,SAAU,OAAO2B,EAAOziB,EAAM8gB,UAAU,GAC9D,GAAIt8B,KAAK49B,KAAOpiB,EAAM+gB,WAAY,OAAO0B,EAAOziB,EAAM+gB,WACxD,MAAO,GAAI6B,GACT,GAAIp+B,KAAK49B,KAAOpiB,EAAM8gB,SAAU,OAAO2B,EAAOziB,EAAM8gB,UAAU,OACzD,CACL,IAAK+B,EAAY,MAAM,IAAIz9B,MAAM,0CACjC,GAAIZ,KAAK49B,KAAOpiB,EAAM+gB,WAAY,OAAO0B,EAAOziB,EAAM+gB,WACxD,CACF,CACF,CACF,EACAR,OAAQ,SAAgBj0B,EAAMgP,GAC5B,IAAK,IAAInW,EAAIX,KAAKy8B,WAAWl9B,OAAS,EAAGoB,GAAK,IAAKA,EAAG,CACpD,IAAI6a,EAAQxb,KAAKy8B,WAAW97B,GAC5B,GAAI6a,EAAM6gB,QAAUr8B,KAAK49B,MAAQ5E,EAAOj4B,KAAKya,EAAO,eAAiBxb,KAAK49B,KAAOpiB,EAAM+gB,WAAY,CACjG,IAAI+B,EAAe9iB,EACnB,KACF,CACF,CACA8iB,IAAiB,UAAYx2B,GAAQ,aAAeA,IAASw2B,EAAajC,QAAUvlB,GAAOA,GAAOwnB,EAAa/B,aAAe+B,EAAe,MAC7I,IAAInD,EAASmD,EAAeA,EAAa3B,WAAa,CAAC,EACvD,OAAOxB,EAAOrzB,KAAOA,EAAMqzB,EAAOrkB,IAAMA,EAAKwnB,GAAgBt+B,KAAK86B,OAAS,OAAQ96B,KAAKi8B,KAAOqC,EAAa/B,WAAYlC,GAAoBr6B,KAAKu+B,SAASpD,EAC5J,EACAoD,SAAU,SAAkBpD,EAAQqB,GAClC,GAAI,UAAYrB,EAAOrzB,KAAM,MAAMqzB,EAAOrkB,IAC1C,MAAO,UAAYqkB,EAAOrzB,MAAQ,aAAeqzB,EAAOrzB,KAAO9H,KAAKi8B,KAAOd,EAAOrkB,IAAM,WAAaqkB,EAAOrzB,MAAQ9H,KAAK+9B,KAAO/9B,KAAK8W,IAAMqkB,EAAOrkB,IAAK9W,KAAK86B,OAAS,SAAU96B,KAAKi8B,KAAO,OAAS,WAAad,EAAOrzB,MAAQ00B,IAAax8B,KAAKi8B,KAAOO,GAAWnC,CACtQ,EACAmE,OAAQ,SAAgBjC,GACtB,IAAK,IAAI57B,EAAIX,KAAKy8B,WAAWl9B,OAAS,EAAGoB,GAAK,IAAKA,EAAG,CACpD,IAAI6a,EAAQxb,KAAKy8B,WAAW97B,GAC5B,GAAI6a,EAAM+gB,aAAeA,EAAY,OAAOv8B,KAAKu+B,SAAS/iB,EAAMmhB,WAAYnhB,EAAMghB,UAAWE,EAAclhB,GAAQ6e,CACrH,CACF,EACA,MAAS,SAAgBgC,GACvB,IAAK,IAAI17B,EAAIX,KAAKy8B,WAAWl9B,OAAS,EAAGoB,GAAK,IAAKA,EAAG,CACpD,IAAI6a,EAAQxb,KAAKy8B,WAAW97B,GAC5B,GAAI6a,EAAM6gB,SAAWA,EAAQ,CAC3B,IAAIlB,EAAS3f,EAAMmhB,WACnB,GAAI,UAAYxB,EAAOrzB,KAAM,CAC3B,IAAI22B,EAAStD,EAAOrkB,IACpB4lB,EAAclhB,EAChB,CACA,OAAOijB,CACT,CACF,CACA,MAAM,IAAI79B,MAAM,wBAClB,EACA89B,cAAe,SAAuB54B,EAAUk2B,EAAYE,GAC1D,OAAOl8B,KAAKy7B,SAAW,CACrB/0B,SAAUT,EAAOH,GACjBk2B,WAAYA,EACZE,QAASA,GACR,SAAWl8B,KAAK86B,SAAW96B,KAAK8W,SAAMtK,GAAY6tB,CACvD,GACCv7B,CACL,CACAD,EAAOC,QAAU+5B,EAAqBh6B,EAAOC,QAAQg6B,YAAa,EAAMj6B,EAAOC,QAAiB,QAAID,EAAOC,kBC1T3G,SAAS0H,EAAQ1B,GAGf,OAAQjG,EAAOC,QAAU0H,EAAU,mBAAqBC,QAAU,iBAAmBA,OAAOC,SAAW,SAAU5B,GAC/G,cAAcA,CAChB,EAAI,SAAUA,GACZ,OAAOA,GAAO,mBAAqB2B,QAAU3B,EAAIY,cAAgBe,QAAU3B,IAAQ2B,OAAOhB,UAAY,gBAAkBX,CAC1H,EAAGjG,EAAOC,QAAQg6B,YAAa,EAAMj6B,EAAOC,QAAiB,QAAID,EAAOC,QAAU0H,EAAQ1B,EAC5F,CACAjG,EAAOC,QAAU0H,EAAS3H,EAAOC,QAAQg6B,YAAa,EAAMj6B,EAAOC,QAAiB,QAAID,EAAOC,wBCP/F,IAAI6/B,EAAU,EAAQ,KAAR,GACd9/B,EAAOC,QAAU6/B,EAGjB,IACEC,mBAAqBD,CAOvB,CANE,MAAOE,GACmB,iBAAfC,WACTA,WAAWF,mBAAqBD,EAEhCpc,SAAS,IAAK,yBAAdA,CAAwCoc,EAE5C,ICbII,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBzyB,IAAjB0yB,EACH,OAAOA,EAAapgC,QAGrB,IAAID,EAASkgC,EAAyBE,GAAY,CACjDE,GAAIF,EACJG,QAAQ,EACRtgC,QAAS,CAAC,GAUX,OANAugC,EAAoBJ,GAAUl+B,KAAKlC,EAAOC,QAASD,EAAQA,EAAOC,QAASkgC,GAG3EngC,EAAOugC,QAAS,EAGTvgC,EAAOC,OACf,CCxBAkgC,EAAoB5+B,EAAKvB,IACxB,IAAIygC,EAASzgC,GAAUA,EAAOi6B,WAC7B,IAAOj6B,EAAiB,QACxB,IAAM,EAEP,OADAmgC,EAAoBO,EAAED,EAAQ,CAAE7+B,EAAG6+B,IAC5BA,CAAM,ECLdN,EAAoBO,EAAI,CAACzgC,EAAS0gC,KACjC,IAAI,IAAIn3B,KAAOm3B,EACXR,EAAoBz+B,EAAEi/B,EAAYn3B,KAAS22B,EAAoBz+B,EAAEzB,EAASuJ,IAC5EtC,OAAOye,eAAe1lB,EAASuJ,EAAK,CAAEkxB,YAAY,EAAM5qB,IAAK6wB,EAAWn3B,IAE1E,ECND22B,EAAoB9W,EAAI,WACvB,GAA0B,iBAAf4W,WAAyB,OAAOA,WAC3C,IACC,OAAO9+B,MAAQ,IAAIuiB,SAAS,cAAb,EAGhB,CAFE,MAAOriB,GACR,GAAsB,iBAAXL,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCAxBm/B,EAAoBz+B,EAAI,CAACuE,EAAKquB,IAAUptB,OAAON,UAAUwS,eAAelX,KAAK+D,EAAKquB,GCClF6L,EAAoB3+B,EAAKvB,IACH,oBAAX2H,QAA0BA,OAAOmZ,aAC1C7Z,OAAOye,eAAe1lB,EAAS2H,OAAOmZ,YAAa,CAAEnb,MAAO,WAE7DsB,OAAOye,eAAe1lB,EAAS,aAAc,CAAE2F,OAAO,GAAO,ECL9Du6B,EAAoBS,IAAO5gC,IAC1BA,EAAO6gC,MAAQ,GACV7gC,EAAO8gC,WAAU9gC,EAAO8gC,SAAW,IACjC9gC,sBCHR,SAAS+gC,EAAmBC,EAAKj7B,EAASD,EAAQm7B,EAAOC,EAAQ13B,EAAKyO,GACpE,IACE,IAAI8C,EAAOimB,EAAIx3B,GAAKyO,GAChBrS,EAAQmV,EAAKnV,KAInB,CAHE,MAAOkB,GAEP,YADAhB,EAAOgB,EAET,CACIiU,EAAK4hB,KACP52B,EAAQH,GAERhB,QAAQmB,QAAQH,GAAOM,KAAK+6B,EAAOC,EAEvC,CACe,SAASC,EAAkB/O,GACxC,OAAO,WACL,IAAIlxB,EAAOC,KACTwU,EAAOvP,UACT,OAAO,IAAIxB,SAAQ,SAAUmB,EAASD,GACpC,IAAIk7B,EAAM5O,EAAGjsB,MAAMjF,EAAMyU,GACzB,SAASsrB,EAAMr7B,GACbm7B,EAAmBC,EAAKj7B,EAASD,EAAQm7B,EAAOC,EAAQ,OAAQt7B,EAClE,CACA,SAASs7B,EAAOv2B,GACdo2B,EAAmBC,EAAKj7B,EAASD,EAAQm7B,EAAOC,EAAQ,QAASv2B,EACnE,CACAs2B,OAAMtzB,EACR,GACF,CACF,2CC7Be,SAASyzB,EAAgBn7B,EAAKuD,EAAK5D,GAWhD,OAVI4D,KAAOvD,EACTiB,OAAOye,eAAe1f,EAAKuD,EAAK,CAC9B5D,MAAOA,EACP80B,YAAY,EACZC,cAAc,EACdC,UAAU,IAGZ30B,EAAIuD,GAAO5D,EAENK,CACT,qDCUMo7B,mBAAsB,CAAC,OAAQ,UAAW,SAAU,yBAA0B,SAEvEC,EAAuB,SAACr4B,GAAI,OAAK,IAASo4B,EAAqBp4B,EAAK,EAqDpEs4B,EAA4B,SAACC,EAAcC,GACtD,IAOIC,EAPEC,EAAW,CACfpZ,IAAKiZ,EAAalB,IAEd55B,EAAS86B,EAAa96B,OACtBk7B,EAAQJ,EAAaK,aAAap5B,KAIxC,OAHAk5B,EAASC,MAAQA,EACjBD,EAASG,KAAON,EAAaK,aAAaE,kBAElCP,EAAav4B,MACnB,IAAK,OACHy4B,EAAa,gBACb,MACF,IAAK,SACHA,EAAa,eACb,MACF,IAAK,SACHA,EAAa,eACb,MACF,IAAK,OACHA,EAAa,cACb,MACF,IAAK,iBACHA,EAAa,iBACb,MACF,IAAK,iBACHA,EAAa,mBACb,MACF,IAAK,OACHA,EAAa,aAkBjB,MAd0B,2BAAtBF,EAAav4B,KACf04B,EAASK,KAAOP,EAAKngC,EAAE,6BAA8B,CAACkgC,EAAaS,QAC1DP,EACTC,EAASK,KAAOP,EAAKngC,EAAE,iBAAmBogC,GACjCJ,EAAqBE,EAAav4B,QAC3C04B,EAASK,KAAOR,EAAa96B,OAAOw7B,MAIlCx7B,GAAUA,EAAOy7B,aAAez7B,EAAOy7B,YAAYzhC,OAAS,IAAMgG,EAAO07B,MAC3E17B,EAAOy7B,YAAY,GAAGE,SAASC,WAAW,YAC1CX,EAASY,MAAQ77B,EAAOy7B,YAAY,GAAGhS,KAGlCwR,CACT,EC1HA,MAAMjQ,EAAS,WAGTC,EAAO,GAUPC,EAAgB,QAEhBE,EAAkB,4BAGlBC,EAAS,CACd,SAAY,kDACZ,YAAa,iDACb,gBAAiB,iBAKZC,EAAQrF,KAAKqF,MACQroB,OAAOuoB,aAUlC,SAASprB,EAAMmC,GACd,MAAM,IAAIkpB,WAAWJ,EAAO9oB,GAC7B,CA6BA,SAASopB,EAAUnyB,EAAQkyB,GAC1B,MAAM9pB,EAAQpI,EAAOywB,MAAM,KAC3B,IAAInqB,EAAS,GACT8B,EAAM5H,OAAS,IAGlB8F,EAAS8B,EAAM,GAAK,IACpBpI,EAASoI,EAAM,IAIhB,MACMk6B,EA/BP,SAAa7qB,EAAOya,GACnB,MAAM5rB,EAAS,GACf,IAAI9F,EAASiX,EAAMjX,OACnB,KAAOA,KACN8F,EAAO9F,GAAU0xB,EAAGza,EAAMjX,IAE3B,OAAO8F,CACR,CAwBiBijB,EAFhBvpB,EAASA,EAAOga,QAAQ4X,EAAiB,MACnBnB,MAAM,KACAyB,GAAIE,KAAK,KACrC,OAAO9rB,EAASg8B,CACjB,CA+CA,MA8CMzP,EAAQ,SAASC,EAAOC,EAAWC,GACxC,IAAIxkB,EAAI,EAGR,IAFAskB,EAAQE,EAAYlB,EAAMgB,EA1Kd,KA0K8BA,GAAS,EACnDA,GAAShB,EAAMgB,EAAQC,GACOD,EAAQG,IAA2BzkB,GAAKijB,EACrEqB,EAAQhB,EAAMgB,EA3JMrB,IA6JrB,OAAOK,EAAMtjB,EAAI,GAAsBskB,GAASA,EAhLpC,IAiLb,EASMI,EAAS,SAASC,GAEvB,MAAMZ,EAAS,GACTkB,EAAcN,EAAM3yB,OAC1B,IAAIoB,EAAI,EACJP,EA5LY,IA6LZqyB,EA9Le,GAoMfN,EAAQD,EAAMQ,YAlMD,KAmMbP,EAAQ,IACXA,EAAQ,GAGT,IAAK,IAAI/kB,EAAI,EAAGA,EAAI+kB,IAAS/kB,EAExB8kB,EAAM1yB,WAAW4N,IAAM,KAC1BzH,EAAM,aAEP2rB,EAAOpuB,KAAKgvB,EAAM1yB,WAAW4N,IAM9B,IAAK,IAAI/N,EAAQ8yB,EAAQ,EAAIA,EAAQ,EAAI,EAAG9yB,EAAQmzB,GAAwC,CAO3F,IAAIJ,EAAOzxB,EACX,IAAK,IAAI0xB,EAAI,EAAG9kB,EAAIijB,GAA0BjjB,GAAKijB,EAAM,CAEpDnxB,GAASmzB,GACZ7sB,EAAM,iBAGP,MAAM+rB,GA9FqBa,EA8FAL,EAAM1yB,WAAWH,MA7F9B,GAAO,GACfkzB,EAAY,GAEhBA,EAAY,GAAO,GACfA,EAAY,GAEhBA,EAAY,GAAO,GACfA,EAAY,GAEb/B,GAsFDkB,GAASlB,GAAQkB,EAAQb,GAAON,EAAS5vB,GAAK0xB,KACjD1sB,EAAM,YAGPhF,GAAK+wB,EAAQW,EACb,MAAMlyB,EAAIoN,GAAKklB,EA7OL,EA6OoBllB,GAAKklB,EA5OzB,MA4O8CllB,EAAIklB,EAE5D,GAAIf,EAAQvxB,EACX,MAGD,MAAMmyB,EAAa9B,EAAOrwB,EACtBkyB,EAAIxB,EAAMN,EAAS+B,IACtB3sB,EAAM,YAGP0sB,GAAKC,CAEN,CAEA,MAAM9sB,EAAM8rB,EAAO/xB,OAAS,EAC5BkzB,EAAOb,EAAMjxB,EAAIyxB,EAAM5sB,EAAa,GAAR4sB,GAIxBvB,EAAMlwB,EAAI6E,GAAO+qB,EAASnwB,GAC7BuF,EAAM,YAGPvF,GAAKywB,EAAMlwB,EAAI6E,GACf7E,GAAK6E,EAGL8rB,EAAO7G,OAAO9pB,IAAK,EAAGP,EAEvB,CAnIoB,IAASmyB,EAqI7B,OAAO/pB,OAAO84B,iBAAiBhQ,EAChC,EAkKA,EAtDkB,SAASY,GAC1B,OAAOhB,EAAUgB,GAAO,SAASnzB,GAChC,OAAO0xB,EAAc9iB,KAAK5O,GACvBkzB,EAAOlzB,EAAOsO,MAAM,GAAG6lB,eACvBn0B,CACJ,GACD,ikBCzXA,IAyBawiC,EAAY,SAACz/B,GACxB,IAAMwvB,EAAS,CAAC,EACVkQ,EAAQz7B,OAAON,UAAUwS,eAAelX,KAAKe,EAAM,QAEnD2/B,EAAaD,IAAUz7B,OAAON,UAAUwS,eAAelX,KAAKe,EAAM,UAMxE,GAJAwvB,EAAOoQ,QAAU,KACjBpQ,EAAO6N,GAAK32B,OAAO1G,EAAKq9B,IACxB7N,EAAOqQ,UAAY7/B,EAEf0/B,EAAO,CAMT,GALAlQ,EAAOsQ,YAAc9/B,EAAK+/B,KAC1BvQ,EAAOwQ,IAAMhgC,EAAKggC,IAClBxQ,EAAOyQ,sBAAwBjgC,EAAKktB,IAGhCyS,EACF,OAAOnQ,EAqCT,GAlCAA,EAAOwP,MAAQh/B,EAAKkgC,OACpB1Q,EAAOhqB,KAAOtI,IAAO8C,EAAKmgC,cAC1B3Q,EAAO4Q,UAAY5Q,EAAOhqB,KAC1BgqB,EAAO6Q,eAAiBrgC,EAAKmgC,aAE7B3Q,EAAO/b,YAAczT,EAAKsgC,KAE1B9Q,EAAO+Q,iBAAmBvgC,EAAKsgC,KAE/B9Q,EAAOgR,OAASxgC,EAAKwgC,OACrBhR,EAAOiR,YAAczgC,EAAKwgC,OAAOha,KAAI,SAAAka,GACnC,MAAO,CACLl7B,KAAMtI,IAAOwjC,EAAMl7B,MACnB7C,MAAO+9B,EAAM/9B,MAEjB,IACA6sB,EAAOmR,YAAc3gC,EAAKwgC,OAAOha,KAAI,SAAAka,GACnC,MAAO,CACLl7B,KAAMo7B,SAASF,EAAMl7B,KAAKyR,QAAQ,WAAY,KAC9CtU,MAAOi+B,SAASF,EAAM/9B,MAAMsU,QAAQ,WAAY,KAEpD,IAGAuY,EAAOsP,kBAAoB9+B,EAAK6gC,OAChCrR,EAAOsR,2BAA6B9gC,EAAK6gC,OAGzCrR,EAAOuR,YAAc/gC,EAAKghC,OAE1BxR,EAAOyR,cAAgBjhC,EAAKkhC,gBAE5B1R,EAAO2R,IAAMnhC,EAAKmhC,IAEdnhC,EAAKohC,QAAS,CACZphC,EAAKohC,QAAQC,iBACf7R,EAAO8R,QAAUthC,EAAKohC,QAAQC,eAAe,eAE/C,IAAME,EAAevhC,EAAKohC,QAAQG,aAElC/R,EAAOgS,iBAAmBxhC,EAAKohC,QAAQI,iBACvChS,EAAOiS,QAAUzhC,EAAKohC,QAAQK,QAC9BjS,EAAOkS,MAAQ1hC,EAAKohC,QAAQO,WAExBJ,IACF/R,EAAO+R,aAAeA,GAGxB/R,EAAOoS,qBAAuB5hC,EAAKohC,QAAQQ,qBAE3CpS,EAAOqS,aAAe7hC,EAAKohC,QAAQS,aACnCrS,EAAOsS,eAAiB9hC,EAAKohC,QAAQU,eACrCtS,EAAOuS,mBAAqB/hC,EAAKohC,QAAQW,mBACzCvS,EAAOwS,qBAAuBhiC,EAAKohC,QAAQY,qBAE3CxS,EAAOyS,OAAS,CACdC,UAAWliC,EAAKohC,QAAQe,aACxBC,MAAOpiC,EAAKohC,QAAQiB,UAGlB7S,EAAOyS,OAAOG,MAChB5S,EAAO8S,KAAO,QACL9S,EAAOyS,OAAOC,UACvB1S,EAAO8S,KAAO,YAEd9S,EAAO8S,KAAO,SAGZtiC,EAAKohC,QAAQmB,WACf/S,EAAO+S,WAAaviC,EAAKohC,QAAQmB,WACxBviC,EAAKohC,QAAQiB,SACtB7S,EAAO+S,WAAa,CAClB,aACA,uBACA,gCACA,oBACA,2BACA,eACA,gBACA,kBACA,mBACA,yBACA,sBACA,qCACA,qBACA,mBAEOviC,EAAKohC,QAAQe,aACtB3S,EAAO+S,WAAa,CAClB,kBACA,0BAGF/S,EAAO+S,WAAa,EAExB,CAEIviC,EAAK6f,SACP2P,EAAO/b,YAAczT,EAAK6f,OAAOygB,KACjC9Q,EAAOgT,cAAgBxiC,EAAK6f,OAAO4iB,QACnCjT,EAAOgR,OAASxgC,EAAK6f,OAAO2gB,OACxBxgC,EAAK6f,OAAOuhB,UACd5R,EAAOkT,aAAe1iC,EAAK6f,OAAOuhB,QAAQsB,aAC1ClT,EAAOmT,UAAY3iC,EAAK6f,OAAOuhB,QAAQuB,UACvCnT,EAAOoT,aAAe5iC,EAAK6f,OAAOuhB,QAAQwB,eAK9CpT,EAAOqT,UAAYrT,EAAOsQ,YAAYrrB,SAAS,IACjD,MACE+a,EAAOsQ,YAAc9/B,EAAK8/B,YAE1BtQ,EAAOhqB,KAAOxF,EAAKwF,KACnBgqB,EAAO4Q,UAAYpgC,EAAKogC,UAExB5Q,EAAO/b,YAAczT,EAAKyT,YAC1B+b,EAAO+Q,iBAAmBvgC,EAAKugC,iBAE/B/Q,EAAOsP,kBAAoB9+B,EAAK8+B,kBAChCtP,EAAOsR,2BAA6B9gC,EAAK8gC,2BAEzCtR,EAAOuR,YAAc/gC,EAAK+gC,YAE1BvR,EAAOyR,cAAgBjhC,EAAKihC,cAI5BzR,EAAOyQ,sBAAwBjgC,EAAKigC,sBAEpCzQ,EAAOqT,SAAW7iC,EAAK6iC,SACvBrT,EAAO8S,KAAOtiC,EAAKsiC,KACnB9S,EAAOmT,UAAY3iC,EAAK2iC,UAEpB3iC,EAAKiiC,SACPzS,EAAOyS,OAAS,CACdC,UAAWliC,EAAKiiC,OAAOa,qBACvBV,MAAOpiC,EAAKiiC,OAAOG,QAGvB5S,EAAOkT,aAAe1iC,EAAK0iC,aAC3BlT,EAAOgT,cAAgBxiC,EAAKwiC,cAC5BhT,EAAOqS,aAAe7hC,EAAK6hC,aAC3BrS,EAAOsS,eAAiB9hC,EAAK8hC,eAC7BtS,EAAOuS,mBAAqB/hC,EAAK+hC,mBACjCvS,EAAOwS,qBAAuBhiC,EAAKgiC,qBACnCxS,EAAOgS,iBAAmBxhC,EAAKwhC,iBAE/BhS,EAAOkS,MAAQ1hC,EAAK0hC,MAGpBlS,EAAO+R,aAAe,CACpBwB,OAAQ/iC,EAAKgjC,MACbC,SAAUjjC,EAAKkjC,mBACfC,YAAanjC,EAAKojC,YAClBC,UAAWrjC,EAAKqjC,WA8BpB,GA1BA7T,EAAO8T,WAAa,IAAIrZ,KAAKjqB,EAAKsjC,YAClC9T,EAAO+T,OAASvjC,EAAKujC,OACrB/T,EAAOgU,gBAAkBxjC,EAAKwjC,gBAC9BhU,EAAOiU,eAAiBzjC,EAAKyjC,eAEzBzjC,EAAKohC,UACP5R,EAAOkU,qBAAuB1jC,EAAKohC,QAAQsC,qBAE3ClU,EAAOmU,KAAO3jC,EAAKohC,QAAQuC,KAI3BnU,EAAOoU,iBAAgD,IAA3B5jC,EAAKohC,QAAQyC,WACpC7jC,EAAKohC,QAAQyC,UACd7jC,EAAKohC,QAAQwC,YAEjBpU,EAAOsU,sBAAwB9jC,EAAKohC,QAAQ0C,sBAC5CtU,EAAOuU,kBAAoB/jC,EAAKohC,QAAQ2C,mBAG1CvU,EAAOmU,KAAOnU,EAAOmU,MAAQ,GAC7BnU,EAAOyS,OAASzS,EAAOyS,QAAU,CAAC,EAClCzS,EAAOsU,sBAAwBtU,EAAOsU,uBAAyB,CAAC,EAGhEtU,EAAOwU,eAAiBxU,EAAOsQ,YAC3BtQ,EAAOsQ,aAAetQ,EAAOsQ,YAAYrrB,SAAS,KAAM,CAC1D,IAAMpP,EAAQmqB,EAAOsQ,YAAYpS,MAAM,KACjCuW,EAAgBzV,EAAmBnpB,EAAM,IAC3C4+B,IAAkB5+B,EAAM,IAG1BmqB,EAAO0U,mCAAoC,EAC3C1U,EAAOwU,eAAiB,CAAC3+B,EAAM,GAAI4+B,GAAe5U,KAAK,MAEvDG,EAAO0U,mCAAoC,CAE/C,CAEA,OAAO1U,CACT,EAEa2U,EAAkB,SAACnkC,GAC9B,IAAMwvB,EAAS,CAAC,EAiBhB,OAhBevrB,OAAON,UAAUwS,eAAelX,KAAKe,EAAM,UAQxDwvB,EAAO4P,SAAWp/B,EAAKo/B,UAJvB5P,EAAO4P,SAAWp/B,EAAKohC,QAAUphC,EAAKohC,QAAQgD,UAAYpkC,EAAKgG,KAC/DwpB,EAAO6U,KAAOrkC,EAAKqkC,KACnB7U,EAAO6N,GAAKr9B,EAAKq9B,IAMnB7N,EAAOtC,IAAMltB,EAAKktB,IAClBsC,EAAO8U,gBAAkBtkC,EAAKukC,YAC9B/U,EAAO/b,YAAczT,EAAKyT,YAEnB+b,CACT,EAYagV,EAAc,SAAdA,EAAexkC,GAC1B,IAtRyByD,EAsRnB+rB,EAAS,CAAC,EACVkQ,EAAQz7B,OAAON,UAAUwS,eAAelX,KAAKe,EAAM,WAEzD,GAAI0/B,EAAO,CAmBT,GAlBAlQ,EAAOiV,UAAYzkC,EAAK0kC,WACxBlV,EAAOmV,SAAW3kC,EAAK4kC,iBAEvBpV,EAAOqV,SAAW7kC,EAAK8kC,UACvBtV,EAAOuV,WAAa/kC,EAAKglC,cAEzBxV,EAAOyV,WAAajlC,EAAKilC,WAEzBzV,EAAOxpB,KAAOhG,EAAKklC,OAAS,UAAY,SACxC1V,EAAO2P,KAAOn/B,EAAKmlC,UAEnB3V,EAAO4V,SAAWplC,EAAKqlC,QACvB7V,EAAO0Q,OAASlgC,EAAKkgC,OAErB1Q,EAAOmU,KAAO3jC,EAAK2jC,KAEnBnU,EAAO8V,UAAYtlC,EAAKslC,UAEpBtlC,EAAKohC,QAAS,CAChB,IAAQA,EAAYphC,EAAZohC,QACR5R,EAAOyP,KAAOmC,EAAQiE,QAAUrlC,EAAKohC,QAAQiE,QAAQ,cAAgBrlC,EAAKqlC,QAC1E7V,EAAO+V,QAAUnE,EAAQoE,aAAexlC,EAAKohC,QAAQoE,aAAa,cAAgBxlC,EAAKwlC,aACvFhW,EAAOiW,0BAA4BzlC,EAAKohC,QAAQsE,gBAChDlW,EAAOqT,SAAWzB,EAAQuE,MAC1BnW,EAAOoW,wBAA0B5lC,EAAKohC,QAAQyE,yBAC9CrW,EAAOsW,aAAe1E,EAAQ0E,aAC9BtW,EAAOuW,gBAAkB3E,EAAQ2E,gBACjCvW,EAAOwW,oBAA4Ct7B,IAA3B02B,EAAQ4E,gBAAsC5E,EAAQ4E,cAChF,MACExW,EAAOyP,KAAOj/B,EAAKqlC,QACnB7V,EAAO+V,QAAUvlC,EAAKwlC,aAGxBhW,EAAOyW,sBAAwBjmC,EAAKkmC,eACpC1W,EAAO2W,oBAAsBnmC,EAAKomC,uBAClC5W,EAAO6W,cAAgBrmC,EAAKqmC,cAER,YAAhB7W,EAAOxpB,OACTwpB,EAAO8W,iBAAmB9B,EAAYxkC,EAAKklC,SAG7C1V,EAAO+W,iBAAmBrpC,IAAO8C,EAAKwlC,cACtChW,EAAOgX,aAAexmC,EAAKktB,IAC3BsC,EAAOiX,KAAOzmC,EAAKymC,KACfjX,EAAOiX,OACTjX,EAAOiX,KAAKv7B,SAAWskB,EAAOiX,KAAKv7B,SAAW,IAAIsb,KAAI,SAAAka,GAAK,cACtDA,GAAK,IACRgG,WAAYxpC,IAAOwjC,EAAM/B,QAAM,KAGnCnP,EAAOmX,OAAS3mC,EAAK2mC,OACrBnX,EAAOwT,MAAQhjC,EAAKgjC,KACtB,MACExT,EAAOiV,UAAYzkC,EAAKykC,UACxBjV,EAAOmV,SAAW3kC,EAAK2kC,SAEvBnV,EAAOqV,SAAW7kC,EAAK6kC,SACvBrV,EAAOuV,WAAa/kC,EAAK+kC,WAKzBvV,EAAOxpB,MAxVgBvC,EAwVSzD,GAvVvB4mC,aACF,SAGLnjC,EAAO6iC,iBACF,UAGkB,iBAAf7iC,EAAOojC,KAAoBpjC,EAAOojC,IAAIzpC,MAAM,gCAC5B,iBAAhBqG,EAAOw7B,MAAqBx7B,EAAOw7B,KAAK7hC,MAAM,aACjD,WAGLqG,EAAOw7B,KAAK7hC,MAAM,yBAA2BqG,EAAOqjC,sBAC/C,WAGLrjC,EAAOw7B,KAAK7hC,MAAM,sBAAiD,WAAzBqG,EAAOsjC,cAC5C,SAGF,eAoUar8B,IAAd1K,EAAKm/B,MACP3P,EAAO2P,KAAO6H,EAAOhnC,GACjBA,EAAKsmC,mBACP9W,EAAO2P,KAAOn/B,EAAKsmC,iBAAiBnH,OAGtC3P,EAAO2P,KAAOn/B,EAAKm/B,KAGrB3P,EAAO4V,SAAWplC,EAAKinC,eACvBzX,EAAOyP,KAAOj/B,EAAKi/B,KAEnBzP,EAAOyW,sBAAwBjmC,EAAKimC,sBACpCzW,EAAO2W,oBAAsBnmC,EAAKmmC,oBAClC3W,EAAOoW,wBAA0B5lC,EAAK4lC,wBACtCpW,EAAOiW,0BAA4BzlC,EAAKylC,0BAEpB,YAAhBjW,EAAOxpB,OACTwpB,EAAO8W,iBAAmB9B,EAAYxkC,EAAKsmC,mBAG7C9W,EAAO+V,QAAUvlC,EAAKulC,QACtB/V,EAAO0X,aAAelnC,EAAKknC,aAC3B1X,EAAOgX,aAAexmC,EAAKwmC,aAC3BhX,EAAOqT,SAAW7iC,EAAK6iC,SAGzBrT,EAAO6N,GAAK32B,OAAO1G,EAAKq9B,IACxB7N,EAAO2X,WAAannC,EAAKmnC,WACzB3X,EAAO4X,KAAOpnC,EAAKonC,KACnB5X,EAAO8T,WAAa,IAAIrZ,KAAKjqB,EAAKsjC,YAGlC9T,EAAOyW,sBAAwBzW,EAAOyW,sBAClCv/B,OAAO8oB,EAAOyW,uBACd,KACJzW,EAAO2W,oBAAsB3W,EAAO2W,oBAChCz/B,OAAO8oB,EAAO2W,qBACd,KAEJ3W,EAAO6X,KAAO5H,EAAUC,EAAQ1/B,EAAKsnC,QAAUtnC,EAAKqnC,MAEpD7X,EAAO+X,aAAe7H,EAAQ1/B,EAAKwnC,SAAWxnC,EAAKunC,aAAe,IAAI/gB,IAAIiZ,GAE1EjQ,EAAO0P,cAAgBQ,EAAQ1/B,EAAKynC,kBAAoBznC,EAAKk/B,cAAgB,IAC1E1Y,IAAI2d,GAEP,IAAMuD,EAAkBhI,EAAQ1/B,EAAKklC,OAASllC,EAAKsmC,iBAYnD,OAXIoB,IACFlY,EAAO8W,iBAAmB9B,EAAYkD,IAGxClY,EAAOmY,YAAc,GACrBnY,EAAOoY,YAAc,GAEjB3jC,OAAON,UAAUwS,eAAelX,KAAKe,EAAM,mBAC7CiE,OAAO4jC,OAAOrY,EAAQxvB,EAAK8nC,gBAGtBtY,CACT,EAEauY,EAAoB,SAAC/nC,GAChC,IAKMwvB,EAAS,CAAC,EAEhB,GAHevrB,OAAON,UAAUwS,eAAelX,KAAKe,EAAM,SAoBnD,CACL,IAAMgoC,EAAexD,EAAYxkC,EAAKioC,QACtCzY,EAAOxpB,KAAOhG,EAAKkoC,MACnB1Y,EAAO3K,KAAOsjB,QAAQnoC,EAAKooC,SAC3B5Y,EAAO/rB,OAAyB,SAAhB+rB,EAAOxpB,KACnBw+B,EAAYxkC,EAAKioC,OAAOI,kBACxBL,EACJxY,EAAO8Y,OAASN,EAChBxY,EAAOoP,aAA+B,yBAAhBpP,EAAOxpB,KAAkCy5B,EAAUz/B,EAAKsnC,SAAW7H,EAAUz/B,EAAK4+B,aAC1G,MAzBEpP,EAAOxpB,KARS,CAChBuiC,UAAW,OACXrD,OAAQ,UAMgBllC,EAAKgG,OAAShG,EAAKgG,KAC3CwpB,EAAO3K,KAAO7kB,EAAKohC,QAAQgH,QAC3B5Y,EAAO/rB,OAAS46B,EAAqB7O,EAAOxpB,MAAQw+B,EAAYxkC,EAAKyD,QAAU,KAC/E+rB,EAAO8Y,OAAS9Y,EAAO/rB,OACvB+rB,EAAO1mB,OAAyB,SAAhB0mB,EAAOxpB,KACnB,KACAy5B,EAAUz/B,EAAK8I,QACnB0mB,EAAOoP,aAAea,EAAUz/B,EAAKsnC,SACrC9X,EAAOwP,MAAQh/B,EAAKg/B,MAChBh/B,EAAKwoC,SACPhZ,EAAOgZ,OAASxoC,EAAKwoC,OACrBhZ,EAAOgZ,OAAOnD,QAAUrlC,EAAKwoC,OAAOnD,QACpC7V,EAAOgZ,OAAOzI,KAAON,EAAUz/B,EAAKwoC,OAAOlB,SAC3C9X,EAAOgZ,OAAOC,MAAQhJ,EAAUz/B,EAAKwoC,OAAOC,OAC5CjZ,EAAOgZ,OAAOE,SAAW1oC,EAAKwoC,OAAOE,SAASliB,IAAIge,IAgBtD,OAHAhV,EAAO8T,WAAa,IAAIrZ,KAAKjqB,EAAKsjC,YAClC9T,EAAO6N,GAAK9vB,SAASvN,EAAKq9B,IAEnB7N,CACT,EAEMwX,EAAS,SAACvjC,GAEd,OAAQA,EAAOkgC,MAAQ,IAAIlvB,SAAS,YAAchR,EAAOw7B,MAAQ,IAAI7hC,MADnD,SAEpB,EC1cA,MAAMurC,EAA8B,oBAAX5qC,OA+BnB6qC,EAA8B,mBAAXjkC,QAAuD,iBAAvBA,OAAOmZ,YAC1D,EAActY,GAASojC,EAAYjkC,OAAOa,GAAQA,EAMlDqjC,EAAYlN,GAAuB,iBAARA,GAAoB3J,SAAS2J,GAExDmN,EAAYnN,GAA8B,oBAAtBoN,EAAapN,GACjCqN,EAAiBrN,GAAQsN,EAActN,IAAoC,IAA5B13B,OAAOuK,KAAKmtB,GAAKl+B,OACtE,SAAS,EAAKyrC,EAAKxhC,GACQ,oBAAZlB,UACPA,QAAQC,KAAK,aAAeyiC,GAExBxhC,GACAlB,QAAQC,KAAKiB,EAAI+W,OAG7B,CACA,MAAM,EAASxa,OAAO4jC,OACtB,IAAIsB,EACJ,MAAM,EAAgB,IAEVA,IACHA,EACyB,oBAAfnM,WACDA,WACgB,oBAAT/+B,KACHA,KACkB,oBAAXF,OACHA,YACkB,IAAX,EAAAqoB,EACH,EAAAA,EACA,CAAC,GAE/B,SAASgjB,EAAWC,GAChB,OAAOA,EACFpyB,QAAQ,KAAM,QACdA,QAAQ,KAAM,QACdA,QAAQ,KAAM,UACdA,QAAQ,KAAM,SACvB,CACA,MAAM,EAAiBhT,OAAON,UAAUwS,eACxC,SAAS,EAAOnT,EAAKuD,GACjB,OAAO,EAAetH,KAAK+D,EAAKuD,EACpC,CASA,MAAM,EAAUnC,MAAM2Q,QAChB,EAAc4mB,GAAuB,mBAARA,EAC7B,EAAYA,GAAuB,iBAARA,EAC3B,EAAaA,GAAuB,kBAARA,EAE5B,EAAYA,GACT,OAARA,GAA+B,iBAARA,EAIlB/d,EAAiB3Z,OAAON,UAAUO,SAClC6kC,EAAgBpmC,GAAUib,EAAe3e,KAAK0D,GAC9CsmC,EAAiBtN,GAA8B,oBAAtBoN,EAAapN,GC3D5C,SAAS2N,GAAmBvqC,EAAMq9B,EAAKlxB,EAAU,CAAC,GAC9C,MAAM,OAAEq+B,EAAM,SAAEC,EAAQ,KAAE92B,GAASxH,EAI7BrH,EAAQ,IAAI4lC,YAAY/iC,OADxB3H,IAON,OALA8E,EAAM9E,KAAOA,EACTq9B,IACAv4B,EAAM6lC,SAAWtN,GAErBv4B,EAAM0lC,OAASA,EACR1lC,CACX,CAwBgB6C,OAAOuoB,aAAa,MACpBvoB,OAAOuoB,aAAa,MChFpC,MCKM0a,GAAoB,GAC1BA,GAAiB,GAAuB,CACpC,EAAuB,CAAC,GACxB,EAAmB,CAAC,EAAkB,GACtC,IAA0B,CAAC,GAC3B,EAAyB,CAAC,IAE9BA,GAAiB,GAAmB,CAChC,EAAuB,CAAC,GACxB,IAAiB,CAAC,GAClB,IAA0B,CAAC,GAC3B,EAAyB,CAAC,IAE9BA,GAAiB,GAAwB,CACrC,EAAuB,CAAC,GACxB,EAAmB,CAAC,EAAkB,GACtC,EAAkB,CAAC,EAAkB,IAEzCA,GAAiB,GAAoB,CACjC,EAAmB,CAAC,EAAkB,GACtC,EAAkB,CAAC,EAAkB,GACrC,EAAuB,CAAC,EAAiB,GACzC,IAAiB,CAAC,EAAsB,GACxC,IAA0B,CAAC,EAAqB,GAChD,EAAyB,CAAC,EAAoB,IAElDA,GAAiB,GAAuB,CACpC,IAA0B,CAAC,EAAyB,GACpD,IAA2B,CAAC,EAAyB,GACrD,IAA0B,CACtB,EACA,GAEJ,IAA2B,CAAC,EAAiB,GAC7C,EAAyB,EACzB,EAAkB,CAAC,EAAqB,IAE5CA,GAAiB,GAA2B,CACxC,IAA0B,CAAC,EAAqB,GAChD,EAAyB,EACzB,EAAkB,CAAC,EAAyB,IAEhDA,GAAiB,GAA2B,CACxC,IAA2B,CAAC,EAAqB,GACjD,EAAyB,EACzB,EAAkB,CAAC,EAAyB,IAKhD,MAAMC,GAAiB,kDAevB,SAASC,GAAgBC,GACrB,GAAIA,QACA,MAAO,IAGX,OADaA,EAAGpsC,WAAW,IAEvB,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACD,OAAOosC,EACX,KAAK,GACL,KAAK,GACL,KAAK,GACD,MAAO,IACX,KAAK,EACL,KAAK,GACL,KAAK,GACL,KAAK,IACL,KAAK,MACL,KAAK,KACL,KAAK,KACD,MAAO,IAEf,MAAO,GACX,CAgHA,MAAMzmB,GAAQ,IAAIlJ,IAclB,SAAS4vB,GAAoB/mC,EAAKwa,GAC9B,OAAO,EAASxa,GAAOA,EAAIwa,GAAQ,IACvC,CA8CA,MAAMwsB,GAAoB7sC,GAAQA,EAC5B8sC,GAAmB1tC,GAAQ,GAE3B2tC,GAAqB/lC,GAA6B,IAAlBA,EAAO1G,OAAe,GAAK0G,EAAOkrB,KAAK,IACvE8a,GH1KmBxO,GACP,MAAPA,EACD,GACA,EAAQA,IAASsN,EAActN,IAAQA,EAAIz3B,WAAa0Z,EACpDpM,KAAKC,UAAUkqB,EAAK,KAAM,GAC1Bj1B,OAAOi1B,GGsKrB,SAASyO,GAAcC,EAAQC,GAE3B,OADAD,EAAS3gB,KAAK6gB,IAAIF,GACI,IAAlBC,EAEOD,EACDA,EAAS,EACL,EACA,EACJ,EAEHA,EAAS3gB,KAAK8gB,IAAIH,EAAQ,GAAK,CAC1C,CAgHA,IAAII,GAAW,KAiBf,MAAMC,GAAmCC,GD7ZlB,sBC8ZvB,SAASA,GAAmBC,GACxB,OAAQC,GAAaJ,IAAYA,GAASK,KAAKF,EAAMC,EACzD,CAwCA,SAASE,GAAmBxuC,EAAKyuC,EAAUxoB,GAGvC,MAAO,IAAI,IAAI9H,IAAI,CACX8H,KACI,EAAQwoB,GACNA,EACA,EAASA,GACL/mC,OAAOuK,KAAKw8B,GACZ,EAASA,GACL,CAACA,GACD,CAACxoB,KAE3B,CAiBA,SAASyoB,GAAwB1uC,EAAKyuC,EAAUxoB,GAC5C,MAAM0oB,EAAc,EAAS1oB,GAASA,EAAQ2oB,GACxC/S,EAAU77B,EACX67B,EAAQgT,qBACThT,EAAQgT,mBAAqB,IAAIjxB,KAErC,IAAIkxB,EAAQjT,EAAQgT,mBAAmBv+B,IAAIq+B,GAC3C,IAAKG,EAAO,CACRA,EAAQ,GAER,IAAIC,EAAQ,CAAC9oB,GAEb,KAAO,EAAQ8oB,IACXA,EAAQC,GAAmBF,EAAOC,EAAON,GAI7C,MAAMQ,EAAW,EAAQR,KAAc/B,EAAc+B,GAC/CA,EACAA,EAAkB,QACdA,EAAkB,QAClB,KAEVM,EAAQ,EAASE,GAAY,CAACA,GAAYA,EACtC,EAAQF,IACRC,GAAmBF,EAAOC,GAAO,GAErClT,EAAQgT,mBAAmBzxB,IAAIuxB,EAAaG,EAChD,CACA,OAAOA,CACX,CACA,SAASE,GAAmBF,EAAOC,EAAOG,GACtC,IAAIC,GAAS,EACb,IAAK,IAAI7sC,EAAI,EAAGA,EAAIysC,EAAM7tC,QAAU,EAAUiuC,GAAS7sC,IAAK,CACxD,MAAM8sC,EAASL,EAAMzsC,GACjB,EAAS8sC,KACTD,EAASE,GAAoBP,EAAOC,EAAMzsC,GAAI4sC,GAEtD,CACA,OAAOC,CACX,CACA,SAASE,GAAoBP,EAAOM,EAAQF,GACxC,IAAIC,EACJ,MAAMG,EAASF,EAAOje,MAAM,KAC5B,GAEIge,EAASI,GAAkBT,EADZQ,EAAOxc,KAAK,KACeoc,GAC1CI,EAAOljB,QAAQ,EAAG,SACbkjB,EAAOpuC,SAAqB,IAAXiuC,GAC1B,OAAOA,CACX,CACA,SAASI,GAAkBT,EAAOviC,EAAQ2iC,GACtC,IAAIC,GAAS,EACb,IAAKL,EAAM52B,SAAS3L,KAChB4iC,GAAS,EACL5iC,GAAQ,CACR4iC,EAAuC,MAA9B5iC,EAAOA,EAAOrL,OAAS,GAChC,MAAMkuC,EAAS7iC,EAAOmO,QAAQ,KAAM,IACpCo0B,EAAMjqC,KAAKuqC,IACN,EAAQF,IAAWxC,EAAcwC,KAClCA,EAAOE,KAGPD,EAASD,EAAOE,GAExB,CAEJ,OAAOD,CACX,CAOA,MAEMP,GAAiB,QAEjB,GAAchuC,GAAQ,GAAGA,EAAI4tB,OAAO,GAAGghB,sBAAsB5uC,EAAI00B,OAAO,KA6B9E,IAIIma,GAWAC,GAYAC,GAAkB,KACtB,MAAMC,GAAsB9H,IACxB6H,GAAkB7H,CAAI,EAG1B,IAAI+H,GAAmB,KACvB,MAAMC,GAAsBjU,IACxBgU,GAAmBhU,CAAO,EAI9B,IAAIkU,GAAO,EAsHX,SAASC,GAAcnU,EAAS7xB,EAAKolC,EAAQa,EAAaxmC,GACtD,MAAM,QAAEymC,EAAO,OAAEC,GAAWtU,EAa5B,GAAgB,OAAZqU,EAAkB,CAClB,MAAME,EAAMF,EAAQrU,EAASuT,EAAQplC,EAAKP,GAC1C,OAAO,EAAS2mC,GAAOA,EAAMpmC,CACjC,CAKI,OAAOA,CAEf,CAEA,SAASqmC,GAAqBrwC,EAAKovC,EAAQX,GACvBzuC,EACR6uC,mBAAqB,IAAIjxB,IACjC5d,EAAIswC,iBAAiBtwC,EAAKyuC,EAAUW,EACxC,CAcmB1nC,OAAOk0B,OAAO,MA+BjC,IAAIp5B,GFryBkB,GEsyBtB,MAAM+tC,GAAM,MAAQ/tC,GACdguC,GAAiB,CACnBC,iBAAkBjuC,GAClBkuC,sBAAuBH,KACvBI,0BAA2BJ,KAC3BK,iBAAkBL,MAEtB,SAASM,GAAgBruC,GACrB,OAAOuqC,GAAmBvqC,EAAM,UAA8E2L,EAClH,CAEA,MAOM2iC,GAAwB,IAAM,GAC9BC,GAAqB3R,GAAQ,EAAWA,GAE9C,SAAS4R,GAAUnV,KAAY1lB,GAC3B,MAAM,eAAE86B,EAAc,gBAAEC,EAAe,YAAEC,EAAW,gBAAEC,EAAe,eAAEC,EAAc,SAAEpE,GAAapR,GAC7F7xB,EAAK2E,GAAW2iC,MAAsBn7B,GAOvCo7B,GANc,EAAU5iC,EAAQshC,aAChCthC,EAAQshC,YACRpU,EAAQoU,YACO,EAAUthC,EAAQ6iC,cACjC7iC,EAAQ6iC,aACR3V,EAAQ2V,aACU,EAAU7iC,EAAQ4iC,iBACpC5iC,EAAQ4iC,gBACR1V,EAAQ0V,iBACRE,IAAoB9iC,EAAQ8iC,gBAE5BC,EAAkB,EAAS/iC,EAAQgjC,UAAY,EAAUhjC,EAAQgjC,SAChE,EAAUhjC,EAAQgjC,SAEbP,EAA8BpnC,EAAZ,IAAMA,EAD1B2E,EAAQgjC,QAEZV,EACMG,EAA8BpnC,EAAZ,IAAMA,EAC1B,GACJ4nC,EAAmBX,GAAsC,KAApBS,EACrCtC,EAAS,EAASzgC,EAAQygC,QAAUzgC,EAAQygC,OAASvT,EAAQuT,OAEnEmC,GAoFJ,SAAsB5iC,GACd,EAAQA,EAAQtO,MAChBsO,EAAQtO,KAAOsO,EAAQtO,KAAK4pB,KAAIlT,GAAQ,EAASA,GAAQ81B,EAAW91B,GAAQA,IAEvE,EAASpI,EAAQkjC,QACtBnqC,OAAOuK,KAAKtD,EAAQkjC,OAAOvlB,SAAQtiB,IAC3B,EAAS2E,EAAQkjC,MAAM7nC,MACvB2E,EAAQkjC,MAAM7nC,GAAO6iC,EAAWl+B,EAAQkjC,MAAM7nC,IAClD,GAGZ,CA/FuB8nC,CAAanjC,GAGhC,IAAKojC,EAAaC,EAAc9oB,GAAYuoB,EAEtC,CACEznC,EACAolC,EACAnC,EAASmC,IAAW,CAAC,GAJvB6C,GAAqBpW,EAAS7xB,EAAKolC,EAAQiC,GAW7C1a,EAASob,EAETG,EAAeloC,EASnB,GARKynC,GACC,EAAS9a,IAAWoa,GAAkBpa,IACpCib,IACAjb,EAAS+a,EACTQ,EAAevb,KAIlB8a,IACE,EAAS9a,IAAWoa,GAAkBpa,KACpC,EAASqb,IACd,OAAOb,GAlVM,EAkVuBnnC,EAUxC,IAAImoC,GAAW,EACf,MAIMxF,EAAOoE,GAAkBpa,GAEzBA,EADAyb,GAAqBvW,EAAS7xB,EAAKgoC,EAAcrb,EAAQub,GALzC,KAClBC,GAAW,CAAI,IAOnB,GAAIA,EACA,OAAOxb,EAGX,MAAM0b,EAuQV,SAAkCxW,EAASuT,EAAQlmB,EAASva,GACxD,MAAM,UAAE2jC,EAAS,YAAEC,EAAaC,gBAAiBC,EAAY,eAAEpB,EAAc,aAAEG,EAAY,YAAEvB,EAAW,gBAAEyC,GAAoB7W,EA0BxHwW,EAAa,CACfjD,SACAkD,YACAC,cACAtF,SA7BoBjjC,IACpB,IAAIo1B,EAAMqT,EAAavpB,EAASlf,GAEhC,GAAW,MAAPo1B,GAAesT,EAAiB,CAChC,MAAO,CAAE,CAAExpB,GAAW+oB,GAAqBS,EAAiB1oC,EAAKolC,EAAQiC,GACzEjS,EAAMqT,EAAavpB,EAASlf,EAChC,CACA,GAAI,EAASo1B,GAAM,CACf,IAAI+S,GAAW,EACf,MAGMxF,EAAMyF,GAAqBvW,EAAS7xB,EAAKolC,EAAQhQ,EAAKp1B,GAHtC,KAClBmoC,GAAW,CAAI,IAGnB,OAAQA,EAEFrB,GADAnE,CAEV,CACK,OAAIoE,GAAkB3R,GAChBA,EAIA0R,EACX,GAoBJ,OAZIjV,EAAQ8W,YACRN,EAAWM,UAAY9W,EAAQ8W,WAE/BhkC,EAAQtO,OACRgyC,EAAWhyC,KAAOsO,EAAQtO,MAE1BsO,EAAQkjC,QACRQ,EAAWR,MAAQljC,EAAQkjC,OAE3BvF,EAAS39B,EAAQikC,UACjBP,EAAWQ,YAAclkC,EAAQikC,QAE9BP,CACX,CArTuBS,CAAyBjX,EAASmW,EAAc9oB,EAASva,GAEtEokC,EAsKV,SAAyBlX,EAAS8Q,EAAKqG,GA6BnC,OAlBiBrG,EAAIqG,EAmBzB,CApMqBC,CAAgBpX,EAAS8Q,EA1mB9C,SAA8Bh+B,EAAU,CAAC,GACrC,MAAMygC,EAASzgC,EAAQygC,OACjByD,EAxBV,SAAwBlkC,GAEpB,MAAM3N,EAAQsrC,EAAS39B,EAAQkkC,aACzBlkC,EAAQkkC,aACP,EAEP,OAAOlkC,EAAQkjC,QAAUvF,EAAS39B,EAAQkjC,MAAMhgC,QAAUy6B,EAAS39B,EAAQkjC,MAAM9vC,IAC3EuqC,EAAS39B,EAAQkjC,MAAMhgC,OACnBlD,EAAQkjC,MAAMhgC,MACdy6B,EAAS39B,EAAQkjC,MAAM9vC,GACnB4M,EAAQkjC,MAAM9vC,EACdf,EACRA,CACV,CAWwBkyC,CAAevkC,GAC7BwkC,EAAa,EAASxkC,EAAQ4jC,cAChC,EAASnD,IACT,EAAWzgC,EAAQ4jC,YAAYnD,IAC7BzgC,EAAQ4jC,YAAYnD,GACpBvB,GACAuF,EAAgB,EAASzkC,EAAQ4jC,cACnC,EAASnD,IACT,EAAWzgC,EAAQ4jC,YAAYnD,IAC7BvB,QACA1/B,EAIA7N,EAAQqO,EAAQtO,MAAQ,GAGxBgzC,EAAS1kC,EAAQkjC,OAAS,CAAC,EAGjC,SAAS3oB,EAAQlf,GAOb,OALY,EAAW2E,EAAQs+B,UACzBt+B,EAAQs+B,SAASjjC,KACjB,EAAS2E,EAAQs+B,WACbt+B,EAAQs+B,SAASjjC,MAGrB2E,EAAQ2kC,OACJ3kC,EAAQ2kC,OAAOpqB,QAAQlf,GACvB0jC,GAEd,CAdApB,EAAS39B,EAAQkkC,cA5BrB,SAAwBA,EAAahsB,GAC5BA,EAAMhV,QACPgV,EAAMhV,MAAQghC,GAEbhsB,EAAM9kB,IACP8kB,EAAM9kB,EAAI8wC,EAElB,CAqBqCU,CAAeV,EAAaQ,GAe7D,MAGMpzC,EAAYysC,EAAc/9B,EAAQgkC,YAAc,EAAWhkC,EAAQgkC,UAAU1yC,WAC7E0O,EAAQgkC,UAAU1yC,UAClB0tC,GACAxtC,EAAcusC,EAAc/9B,EAAQgkC,YACtC,EAAWhkC,EAAQgkC,UAAUxyC,aAC3BwO,EAAQgkC,UAAUxyC,YAClBytC,GAgCA5tC,EAAM,CACR,KA5DUgB,GAAUV,EAAMU,GA6D1B,MAzDWgJ,GAAQqpC,EAAOrpC,GA0D1B,OAlEYijC,GACLA,EAASkG,EAAWN,EAAa5F,EAAS/rC,OAAQkyC,IAkEzD,OAhCW,CAACppC,KAAQmM,KACpB,MAAOq9B,EAAMC,GAAQt9B,EACrB,IAAI1M,EAAO,OACPiqC,EAAW,GACK,IAAhBv9B,EAAKjV,OACD,EAASsyC,IACTE,EAAWF,EAAKE,UAAYA,EAC5BjqC,EAAO+pC,EAAK/pC,MAAQA,GAEf,EAAS+pC,KACdE,EAAWF,GAAQE,GAGF,IAAhBv9B,EAAKjV,SACN,EAASsyC,KACTE,EAAWF,GAAQE,GAEnB,EAASD,KACThqC,EAAOgqC,GAAQhqC,IAGvB,IAAIkjC,EAAMzjB,EAAQlf,EAARkf,CAAalpB,GAKvB,MAHa,UAATyJ,GAAoB,EAAQkjC,IAAQ+G,IACpC/G,EAAMA,EAAI,IAEP+G,GAvCQzqC,EAuCayqC,EAvCJ/kC,EAAQ2jC,UAC9B3jC,EAAQ2jC,UAAUrpC,GAClBwkC,IAqCoCd,EAAKljC,GAAQkjC,EAvCrC,IAAC1jC,CAuCuC,EAOtD,QAA2BigB,EAC3B,KArCSwjB,EAAc/9B,EAAQgkC,YAAc,EAAShkC,EAAQgkC,UAAUlpC,MACtEkF,EAAQgkC,UAAUlpC,KAnFM,OAwH1B,YAAmCtJ,EACnC,UAA+BF,GAEnC,OAAOD,CACX,CAkhBuB2zC,CAAqBtB,IAGlCjC,EAAMc,EACNA,EAAgB6B,EAAU/oC,GAC1B+oC,EAEN,GAA+Ca,0BAA2B,CAEtE,MAAMtF,EAAW,CACbuF,UAAWnmB,KAAKC,MAChB3jB,IAAK,EAASA,GACRA,EACA+mC,GAAkBpa,GACdA,EAAO3sB,IACP,GACVolC,OAAQ4C,IAAiBjB,GAAkBpa,GACrCA,EAAOyY,OACP,IACNzY,OAAQ,EAASA,GACXA,EACAoa,GAAkBpa,GACdA,EAAOrT,OACP,GACV4F,QAASknB,GAEb9B,EAASxG,KAAO,EAAO,CAAC,EAAGjM,EAAQiY,OArUVnE,IAqUyC,CAAC,GACnExB,GAAkBG,EACtB,CACA,OAAO8B,CACX,CAaA,SAAS6B,GAAqBpW,EAAS7xB,EAAKolC,EAAQiC,EAAgBG,EAAcvB,GAC9E,MAAM,SAAEhD,EAAQ,OAAEkD,EAAQqC,gBAAiBC,EAAY,iBAAEnC,GAAqBzU,EACxEkY,EAAUzD,EAAiBzU,EAASwV,EAAgBjC,GAC1D,IACI4C,EADA9oB,EAAU,CAAC,EAEXyN,EAAS,KACTqd,EAAO5E,EACP6E,EAAK,KAET,IAAK,IAAI3xC,EAAI,EAAGA,EAAIyxC,EAAQ7yC,SACxB8wC,EAAeiC,EAAKF,EAAQzxC,GAsB5B4mB,EACI+jB,EAAS+E,IAAiB,CAAC,EAWe,QAAzCrb,EAAS8b,EAAavpB,EAASlf,MAEhC2sB,EAASzN,EAAQlf,KAoBjB,EAAS2sB,KAAW,EAAWA,IAzDHr0B,IAAK,CA2DrC,MAAM4xC,EAAalE,GAAcnU,EACjC7xB,EAAKgoC,EAAc/B,EA7DV,aA8DLiE,IAAelqC,IACf2sB,EAASud,GAEbF,EAAOC,CACX,CACA,MAAO,CAACtd,EAAQqb,EAAc9oB,EAClC,CACA,SAASkpB,GAAqBvW,EAAS7xB,EAAKgoC,EAAcrb,EAAQub,EAAciC,GAC5E,MAAM,gBAAE/C,EAAe,gBAAEgD,GAAoBvY,EAC7C,GAAIkV,GAAkBpa,GAAS,CAC3B,MAAMgW,EAAMhW,EAGZ,OAFAgW,EAAIyC,OAASzC,EAAIyC,QAAU4C,EAC3BrF,EAAI3iC,IAAM2iC,EAAI3iC,KAAOA,EACd2iC,CACX,CACA,GAAuB,MAAnByE,EAAyB,CACzB,MAAMzE,EAAM,IAAOhW,EAGnB,OAFAgW,EAAIyC,OAAS4C,EACbrF,EAAI3iC,IAAMA,EACH2iC,CACX,CAWA,MAAMA,EAAMyE,EAAgBza,EA0FhC,SAA2BkF,EAASuT,EAAQplC,EAAKsZ,EAAQ8wB,EAAiBD,GACtE,MAAO,CACHC,kBACAttC,QAAUqE,IAmBF,MAlBJgpC,GAAiBA,EAAchpC,GAkBrBA,CACV,EAEJkpC,WAAa/wB,GH5nCU,EAAC8rB,EAAQplC,EAAKsZ,KAAWgxB,OACzBC,EAD+C,CAAE9xC,EAAG2sC,EAAQlgC,EAAGlF,EAAK/H,EAAGqhB,GAC9DrO,KAAKC,UAAUq/B,GAClD75B,QAAQ,UAAW,WACnBA,QAAQ,UAAW,WACnBA,QAAQ,UAAW,WAHM,IAAC65B,CADgF,EG4nC/EC,CAAuBpF,EAAQplC,EAAKsZ,GAEpE,CArHwCmxB,CAAkB5Y,EAASmW,EAAcE,EAAcvb,EAAQyd,EAAiBD,IAqBpH,OAHAxH,EAAIyC,OAAS4C,EACbrF,EAAI3iC,IAAMA,EACV2iC,EAAIrpB,OAASqT,EACNgW,CACX,CAiCA,SAAS2E,MAAsBn7B,GAC3B,MAAOq9B,EAAMC,EAAMiB,GAAQv+B,EACrBxH,EAAU,CAAC,EACjB,IAAK,EAAS6kC,KAAUlH,EAASkH,KAAUzC,GAAkByC,GACzD,MAAM3C,GAAgBL,GAAeC,kBAGzC,MAAMzmC,EAAMsiC,EAASkH,GACfrpC,OAAOqpC,IACPzC,GAAkByC,GACdA,GAuBV,OArBIlH,EAASmH,GACT9kC,EAAQikC,OAASa,EAEZ,EAASA,GACd9kC,EAAQgjC,QAAU8B,EAEb/G,EAAc+G,KAAUhH,EAAcgH,GAC3C9kC,EAAQkjC,MAAQ4B,EAEX,EAAQA,KACb9kC,EAAQtO,KAAOozC,GAEfnH,EAASoI,GACT/lC,EAAQikC,OAAS8B,EAEZ,EAASA,GACd/lC,EAAQgjC,QAAU+C,EAEbhI,EAAcgI,IACnB,EAAO/lC,EAAS+lC,GAEb,CAAC1qC,EAAK2E,EACjB,CA6EA,MAAMgmC,GAA8B,oBAATC,KAO3B,SAASC,GAAShZ,KAAY1lB,GAC1B,MAAM,gBAAE2+B,EAAe,YAAE3D,EAAW,eAAEE,EAAc,OAAElB,EAAM,iBAAEG,GAAqBzU,GAC7E,qBAAEkZ,GAAyBlZ,GAK1B7xB,EAAK5D,EAAOuI,EAASqmC,GAAaC,MAAqB9+B,GAOxDsiB,GANc,EAAU9pB,EAAQshC,aAChCthC,EAAQshC,YACRpU,EAAQoU,YACO,EAAUthC,EAAQ6iC,cACjC7iC,EAAQ6iC,aACR3V,EAAQ2V,eACC7iC,EAAQ8pB,MACjB2W,EAAS,EAASzgC,EAAQygC,QAAUzgC,EAAQygC,OAASvT,EAAQuT,OAC7D2E,EAAUzD,EAAiBzU,EACjCwV,EAAgBjC,GAChB,IAAK,EAASplC,IAAgB,KAARA,EAClB,OAAO,IAAI4qC,KAAKM,eAAe9F,EAAQ4F,GAAWre,OAAOvwB,GAG7D,IACI4rC,EADAmD,EAAiB,CAAC,EAElBxe,EAAS,KACTqd,EAAO5E,EACP6E,EAAK,KAET,IAAK,IAAI3xC,EAAI,EAAGA,EAAIyxC,EAAQ7yC,SACxB8wC,EAAeiC,EAAKF,EAAQzxC,GAsB5B6yC,EACIL,EAAgB9C,IAAiB,CAAC,EACtCrb,EAASwe,EAAenrC,IACpB0iC,EAAc/V,IA1Bcr0B,IA4BhC0tC,GAAcnU,EAAS7xB,EAAKgoC,EAAc/B,EA7BjC,mBA8BT+D,EAAOC,EAGX,IAAKvH,EAAc/V,KAAY,EAASqb,GACpC,OAAOb,GApuBM,EAouBuBnnC,EAExC,IAAI82B,EAAK,GAAGkR,MAAiBhoC,IACxByiC,EAAcuI,KACflU,EAAK,GAAGA,MAAO7rB,KAAKC,UAAU8/B,MAElC,IAAII,EAAYL,EAAqBzkC,IAAIwwB,GAKzC,OAJKsU,IACDA,EAAY,IAAIR,KAAKM,eAAelD,EAAc,EAAO,CAAC,EAAGrb,EAAQqe,IACrED,EAAqB33B,IAAI0jB,EAAIsU,IAEzB3c,EAAiC2c,EAAUC,cAAcjvC,GAAlDgvC,EAAUze,OAAOvwB,EACpC,CA9EoBuuC,IAAsBC,KAAKM,eAC7BP,IAAsBC,KAAKU,aA+E7C,MAAMC,GAA+B,CACjC,gBACA,UACA,MACA,OACA,QACA,MACA,OACA,SACA,SACA,eACA,gBACA,SACA,WACA,YACA,YACA,WACA,YACA,kBACA,YACA,0BAGJ,SAASN,MAAqB9+B,GAC1B,MAAOq9B,EAAMC,EAAMiB,EAAMc,GAAQr/B,EAC3BxH,EAAU,CAAC,EACjB,IACIvI,EADA4uC,EAAY,CAAC,EAEjB,GAAI,EAASxB,GAAO,CAGhB,MAAMiC,EAAUjC,EAAK3yC,MAAM,kCAC3B,IAAK40C,EACD,MAAM5E,GAAgBL,GAAeG,2BAIzC,MAAM+E,EAAWD,EAAQ,GACnBA,EAAQ,GAAG1d,OAAO+K,WAAW,KACzB,GAAG2S,EAAQ,GAAG1d,SAAS0d,EAAQ,GAAG1d,SAClC,GAAG0d,EAAQ,GAAG1d,UAAU0d,EAAQ,GAAG1d,SACvC0d,EAAQ,GAAG1d,OACjB3xB,EAAQ,IAAIsnB,KAAKgoB,GACjB,IAEItvC,EAAMuvC,aAIV,CAFA,MAAO9zC,GACH,MAAMgvC,GAAgBL,GAAeG,0BACzC,CACJ,MACK,GH9yCqC,kBAAtBnE,EG8yCJgH,GAAO,CACnB,GAAIj7B,MAAMi7B,EAAKoC,WACX,MAAM/E,GAAgBL,GAAeE,uBAEzCtqC,EAAQotC,CACZ,KACK,KAAIlH,EAASkH,GAId,MAAM3C,GAAgBL,GAAeC,kBAHrCrqC,EAAQotC,CAIZ,CAuBA,OAtBI,EAASC,GACT9kC,EAAQ3E,IAAMypC,EAET/G,EAAc+G,IACnB/rC,OAAOuK,KAAKwhC,GAAMnnB,SAAQtiB,IAClBurC,GAA6Br9B,SAASlO,GACtCgrC,EAAUhrC,GAAOypC,EAAKzpC,GAGtB2E,EAAQ3E,GAAOypC,EAAKzpC,EACxB,IAGJ,EAAS0qC,GACT/lC,EAAQygC,OAASsF,EAEZhI,EAAcgI,KACnBM,EAAYN,GAEZhI,EAAc8I,KACdR,EAAYQ,GAET,CAAC7mC,EAAQ3E,KAAO,GAAI5D,EAAOuI,EAASqmC,EAC/C,CAEA,SAASa,GAAoB71C,EAAKovC,EAAQzY,GACtC,MAAMkF,EAAU77B,EAChB,IAAK,MAAMgK,KAAO2sB,EAAQ,CACtB,MAAMmK,EAAK,GAAGsO,MAAWplC,IACpB6xB,EAAQkZ,qBAAqB13B,IAAIyjB,IAGtCjF,EAAQkZ,qBAAqBe,OAAOhV,EACxC,CACJ,CAGA,SAAS1S,GAAOyN,KAAY1lB,GACxB,MAAM,cAAE4/B,EAAa,YAAE5E,EAAW,eAAEE,EAAc,OAAElB,EAAM,iBAAEG,GAAqBzU,GAC3E,mBAAEma,GAAuBna,GAKxB7xB,EAAK5D,EAAOuI,EAASqmC,GAAaiB,MAAmB9/B,GAOtDsiB,GANc,EAAU9pB,EAAQshC,aAChCthC,EAAQshC,YACRpU,EAAQoU,YACO,EAAUthC,EAAQ6iC,cACjC7iC,EAAQ6iC,aACR3V,EAAQ2V,eACC7iC,EAAQ8pB,MACjB2W,EAAS,EAASzgC,EAAQygC,QAAUzgC,EAAQygC,OAASvT,EAAQuT,OAC7D2E,EAAUzD,EAAiBzU,EACjCwV,EAAgBjC,GAChB,IAAK,EAASplC,IAAgB,KAARA,EAClB,OAAO,IAAI4qC,KAAKU,aAAalG,EAAQ4F,GAAWre,OAAOvwB,GAG3D,IACI4rC,EADAkE,EAAe,CAAC,EAEhBvf,EAAS,KACTqd,EAAO5E,EACP6E,EAAK,KAET,IAAK,IAAI3xC,EAAI,EAAGA,EAAIyxC,EAAQ7yC,SACxB8wC,EAAeiC,EAAKF,EAAQzxC,GAsB5B4zC,EACIH,EAAc/D,IAAiB,CAAC,EACpCrb,EAASuf,EAAalsC,IAClB0iC,EAAc/V,IA1Bcr0B,IA4BhC0tC,GAAcnU,EAAS7xB,EAAKgoC,EAAc/B,EA7BjC,iBA8BT+D,EAAOC,EAGX,IAAKvH,EAAc/V,KAAY,EAASqb,GACpC,OAAOb,GAn5BM,EAm5BuBnnC,EAExC,IAAI82B,EAAK,GAAGkR,MAAiBhoC,IACxByiC,EAAcuI,KACflU,EAAK,GAAGA,MAAO7rB,KAAKC,UAAU8/B,MAElC,IAAII,EAAYY,EAAmB1lC,IAAIwwB,GAKvC,OAJKsU,IACDA,EAAY,IAAIR,KAAKU,aAAatD,EAAc,EAAO,CAAC,EAAGrb,EAAQqe,IACnEgB,EAAmB54B,IAAI0jB,EAAIsU,IAEvB3c,EAAiC2c,EAAUC,cAAcjvC,GAAlDgvC,EAAUze,OAAOvwB,EACpC,CAEA,MAAM+vC,GAA6B,CAC/B,gBACA,QACA,WACA,kBACA,eACA,cACA,uBACA,wBACA,wBACA,2BACA,2BACA,iBACA,WACA,cACA,OACA,cACA,eACA,mBACA,oBACA,uBAGJ,SAASF,MAAmB9/B,GACxB,MAAOq9B,EAAMC,EAAMiB,EAAMc,GAAQr/B,EAC3BxH,EAAU,CAAC,EACjB,IAAIqmC,EAAY,CAAC,EACjB,IAAK1I,EAASkH,GACV,MAAM3C,GAAgBL,GAAeC,kBAEzC,MAAMrqC,EAAQotC,EAuBd,OAtBI,EAASC,GACT9kC,EAAQ3E,IAAMypC,EAET/G,EAAc+G,IACnB/rC,OAAOuK,KAAKwhC,GAAMnnB,SAAQtiB,IAClBmsC,GAA2Bj+B,SAASlO,GACpCgrC,EAAUhrC,GAAOypC,EAAKzpC,GAGtB2E,EAAQ3E,GAAOypC,EAAKzpC,EACxB,IAGJ,EAAS0qC,GACT/lC,EAAQygC,OAASsF,EAEZhI,EAAcgI,KACnBM,EAAYN,GAEZhI,EAAc8I,KACdR,EAAYQ,GAET,CAAC7mC,EAAQ3E,KAAO,GAAI5D,EAAOuI,EAASqmC,EAC/C,CAEA,SAASoB,GAAkBp2C,EAAKovC,EAAQzY,GACpC,MAAMkF,EAAU77B,EAChB,IAAK,MAAMgK,KAAO2sB,EAAQ,CACtB,MAAMmK,EAAK,GAAGsO,MAAWplC,IACpB6xB,EAAQma,mBAAmB34B,IAAIyjB,IAGpCjF,EAAQma,mBAAmBF,OAAOhV,EACtC,CACJ,CCphDA,SAAS,GAAQlgC,EAAKy1C,GAClB,MAAMpsB,EAAMviB,OAAOk0B,OAAO,MACpBv7B,EAAOO,EAAIuwB,MAAM,KACvB,IAAK,IAAI7uB,EAAI,EAAGA,EAAIjC,EAAKa,OAAQoB,IAC7B2nB,EAAI5pB,EAAKiC,KAAM,EAEnB,OAAO+zC,EAAmBjX,KAASnV,EAAImV,EAAIvK,eAAiBuK,KAASnV,EAAImV,EAC7E,CAyMA,SAASkX,GAAelwC,GACpB,GAAI,GAAQA,GAAQ,CAChB,MAAMmwC,EAAM,CAAC,EACb,IAAK,IAAIj0C,EAAI,EAAGA,EAAI8D,EAAMlF,OAAQoB,IAAK,CACnC,MAAMyU,EAAO3Q,EAAM9D,GACbk0C,EAAa,GAASz/B,GACtB0/B,GAAiB1/B,GACjBu/B,GAAev/B,GACrB,GAAIy/B,EACA,IAAK,MAAMxsC,KAAOwsC,EACdD,EAAIvsC,GAAOwsC,EAAWxsC,EAGlC,CACA,OAAOusC,CACX,CACK,OAAI,GAASnwC,IAGT,GAASA,GAFPA,OAEN,CAGT,CDkzC6C,kBAA9BwtC,4BACP,IAAgBA,2BAA4B,GClzCpD,MAAM8C,GAAkB,gBAClBC,GAAsB,QAC5B,SAASF,GAAiBG,GACtB,MAAMxG,EAAM,CAAC,EAOb,OANAwG,EAAQzlB,MAAMulB,IAAiBpqB,SAAQvV,IACnC,GAAIA,EAAM,CACN,MAAM8/B,EAAM9/B,EAAKoa,MAAMwlB,IACvBE,EAAI31C,OAAS,IAAMkvC,EAAIyG,EAAI,GAAG9e,QAAU8e,EAAI,GAAG9e,OACnD,KAEGqY,CACX,CAiBA,SAAS0G,GAAe1wC,GACpB,IAAImwC,EAAM,GACV,GAAI,GAASnwC,GACTmwC,EAAMnwC,OAEL,GAAI,GAAQA,GACb,IAAK,IAAI9D,EAAI,EAAGA,EAAI8D,EAAMlF,OAAQoB,IAAK,CACnC,MAAMk0C,EAAaM,GAAe1wC,EAAM9D,IACpCk0C,IACAD,GAAOC,EAAa,IAE5B,MAEC,GAAI,GAASpwC,GACd,IAAK,MAAM6C,KAAQ7C,EACXA,EAAM6C,KACNstC,GAAOttC,EAAO,KAI1B,OAAOstC,EAAIxe,MACf,CA6JA,MAmCM,GAEA,CAAC,EAED,GAAO,OAKPgf,GAAO,YACP,GAAQ/sC,GAAQ+sC,GAAKznC,KAAKtF,GAE1B,GAAStC,OAAO4jC,OAOhB,GAAiB5jC,OAAON,UAAUwS,eAClC,GAAS,CAACwlB,EAAKp1B,IAAQ,GAAetH,KAAK08B,EAAKp1B,GAChD,GAAUnC,MAAM2Q,QAChBw+B,GAAS5X,GAA8B,iBAAtB,GAAaA,GAG9B,GAAcA,GAAuB,mBAARA,EAC7B,GAAYA,GAAuB,iBAARA,EAC3B,GAAYA,GAAuB,iBAARA,EAC3B,GAAYA,GAAgB,OAARA,GAA+B,iBAARA,EAI3C,GAAiB13B,OAAON,UAAUO,SAClC,GAAgBvB,GAAU,GAAe1D,KAAK0D,GAM9C6wC,GAAgBjtC,GAAQ,GAASA,IAC3B,QAARA,GACW,MAAXA,EAAI,IACJ,GAAKgH,SAAShH,EAAK,MAAQA,EAQzBktC,GAAuBtkB,IACzB,MAAM9L,EAAQpf,OAAOk0B,OAAO,MAC5B,OAASh7B,GACOkmB,EAAMlmB,KACHkmB,EAAMlmB,GAAOgyB,EAAGhyB,GACjC,EAEAu2C,GAAa,SAObC,IAHWF,IAAqBt2C,GAC3BA,EAAI8Z,QAAQy8B,IAAY,CAACE,EAAGjgC,IAAOA,EAAIA,EAAEkgC,cAAgB,OAEhD,cAQd,IAJYJ,IAAqBt2C,GAAQA,EAAI8Z,QAAQ08B,GAAa,OAAOviB,gBAI5DqiB,IAAqBt2C,GAAQA,EAAI4tB,OAAO,GAAG8oB,cAAgB12C,EAAIoO,MAAM,MAMlF,IAFekoC,IAAqBt2C,GAAQA,EAAM,KAAK,GAAWA,KAAS,KAE9D,CAACwF,EAAOmxC,KAAc7vC,OAAO8vC,GAAGpxC,EAAOmxC,ICviB1D,IAAIE,GACJ,MAAMC,GACFrwC,YAAYswC,GAAW,GACnBh2C,KAAKg2C,SAAWA,EAIhBh2C,KAAKi2C,QAAS,EAIdj2C,KAAKk2C,QAAU,GAIfl2C,KAAKm2C,SAAW,GAChBn2C,KAAK2xC,OAASmE,IACTE,GAAYF,KACb91C,KAAKX,OACAy2C,GAAkBM,SAAWN,GAAkBM,OAAS,KAAKlzC,KAAKlD,MAAQ,EAEvF,CACAq2C,IAAIplB,GACA,GAAIjxB,KAAKi2C,OAAQ,CACb,MAAMK,EAAqBR,GAC3B,IAEI,OADAA,GAAoB91C,KACbixB,GAIX,CAFA,QACI6kB,GAAoBQ,CACxB,CACJ,CAIJ,CAKAC,KACIT,GAAoB91C,IACxB,CAKAw2C,MACIV,GAAoB91C,KAAK2xC,MAC7B,CACA9T,KAAK4Y,GACD,GAAIz2C,KAAKi2C,OAAQ,CACb,IAAIt1C,EAAGG,EACP,IAAKH,EAAI,EAAGG,EAAId,KAAKk2C,QAAQ32C,OAAQoB,EAAIG,EAAGH,IACxCX,KAAKk2C,QAAQv1C,GAAGk9B,OAEpB,IAAKl9B,EAAI,EAAGG,EAAId,KAAKm2C,SAAS52C,OAAQoB,EAAIG,EAAGH,IACzCX,KAAKm2C,SAASx1C,KAElB,GAAIX,KAAKo2C,OACL,IAAKz1C,EAAI,EAAGG,EAAId,KAAKo2C,OAAO72C,OAAQoB,EAAIG,EAAGH,IACvCX,KAAKo2C,OAAOz1C,GAAGk9B,MAAK,GAI5B,IAAK79B,KAAKg2C,UAAYh2C,KAAK2xC,SAAW8E,EAAY,CAE9C,MAAMhe,EAAOz4B,KAAK2xC,OAAOyE,OAAO9sC,MAC5BmvB,GAAQA,IAASz4B,OACjBA,KAAK2xC,OAAOyE,OAAOp2C,KAAKX,OAASo5B,EACjCA,EAAKp5B,MAAQW,KAAKX,MAE1B,CACAW,KAAK2xC,YAASnlC,EACdxM,KAAKi2C,QAAS,CAClB,CACJ,EAuBJ,MAAMS,GAAaR,IACf,MAAMS,EAAM,IAAIn6B,IAAI05B,GAGpB,OAFAS,EAAItkB,EAAI,EACRskB,EAAIv2C,EAAI,EACDu2C,CAAG,EAERC,GAAcD,IAASA,EAAItkB,EAAIwkB,IAAc,EAC7CC,GAAcH,IAASA,EAAIv2C,EAAIy2C,IAAc,EA4B7CE,GAAY,IAAI35B,QAEtB,IAQI45B,GARAC,GAAmB,EACnBJ,GAAa,EAQjB,MAAMK,GAAczwC,OAA6D,IAC3E0wC,GAAsB1wC,OAAqE,IACjG,MAAM,GACFf,YAAYurB,EAAImmB,EAAY,KAAMC,GAC9Br3C,KAAKixB,GAAKA,EACVjxB,KAAKo3C,UAAYA,EACjBp3C,KAAKi2C,QAAS,EACdj2C,KAAKs3C,KAAO,GACZt3C,KAAK2xC,YAASnlC,EAxEtB,SAA2B+qC,EAAQF,EAAQvB,IACnCuB,GAASA,EAAMpB,QACfoB,EAAMnB,QAAQhzC,KAAKq0C,EAE3B,CAqEQC,CAAkBx3C,KAAMq3C,EAC5B,CACAhB,MACI,IAAKr2C,KAAKi2C,OACN,OAAOj2C,KAAKixB,KAEhB,IAAI0gB,EAASqF,GACTS,EAAkBC,GACtB,KAAO/F,GAAQ,CACX,GAAIA,IAAW3xC,KACX,OAEJ2xC,EAASA,EAAOA,MACpB,CACA,IAWI,OAVA3xC,KAAK2xC,OAASqF,GACdA,GAAeh3C,KACf03C,IAAc,EACdb,GAAa,KAAOI,GAChBA,IA9BM,GApCC,GAAGK,WACtB,GAAIA,EAAK/3C,OACL,IAAK,IAAIoB,EAAI,EAAGA,EAAI22C,EAAK/3C,OAAQoB,IAC7B22C,EAAK32C,GAAG0xB,GAAKwkB,EAErB,EA8DYc,CAAe33C,MAGf43C,GAAc53C,MAEXA,KAAKixB,IAahB,CAXA,QACQgmB,IAvCM,IA7BK,CAACM,IACxB,MAAM,KAAED,GAASC,EACjB,GAAID,EAAK/3C,OAAQ,CACb,IAAIs4C,EAAM,EACV,IAAK,IAAIl3C,EAAI,EAAGA,EAAI22C,EAAK/3C,OAAQoB,IAAK,CAClC,MAAMg2C,EAAMW,EAAK32C,GACbi2C,GAAWD,KAASG,GAAWH,GAC/BA,EAAIxC,OAAOoD,GAGXD,EAAKO,KAASlB,EAGlBA,EAAItkB,IAAMwkB,GACVF,EAAIv2C,IAAMy2C,EACd,CACAS,EAAK/3C,OAASs4C,CAClB,GAoDYC,CAAmB93C,MAEvB62C,GAAa,KAAOI,GACpBD,GAAeh3C,KAAK2xC,OACpB+F,GAAcD,EACdz3C,KAAK2xC,YAASnlC,EACVxM,KAAK+3C,WACL/3C,KAAK69B,MAEb,CACJ,CACAA,OAEQmZ,KAAiBh3C,KACjBA,KAAK+3C,WAAY,EAEZ/3C,KAAKi2C,SACV2B,GAAc53C,MACVA,KAAKg4C,QACLh4C,KAAKg4C,SAETh4C,KAAKi2C,QAAS,EAEtB,EAEJ,SAAS2B,GAAcL,GACnB,MAAM,KAAED,GAASC,EACjB,GAAID,EAAK/3C,OAAQ,CACb,IAAK,IAAIoB,EAAI,EAAGA,EAAI22C,EAAK/3C,OAAQoB,IAC7B22C,EAAK32C,GAAGwzC,OAAOoD,GAEnBD,EAAK/3C,OAAS,CAClB,CACJ,CAqBA,IAAIm4C,IAAc,EAClB,MAAMO,GAAa,GACnB,SAAS,KACLA,GAAW/0C,KAAKw0C,IAChBA,IAAc,CAClB,CAKA,SAAS,KACL,MAAMjf,EAAOwf,GAAW3uC,MACxBouC,QAAuBlrC,IAATisB,GAA4BA,CAC9C,CACA,SAASyf,GAAMttC,EAAQ9C,EAAMO,GACzB,GAAIqvC,IAAeV,GAAc,CAC7B,IAAImB,EAAUpB,GAAUpoC,IAAI/D,GACvButC,GACDpB,GAAUt7B,IAAI7Q,EAASutC,EAAU,IAAIl8B,KAEzC,IAAI06B,EAAMwB,EAAQxpC,IAAItG,GACjBsuC,GACDwB,EAAQ18B,IAAIpT,EAAMsuC,EAAMD,MAK5B0B,GAAazB,EACjB,CACJ,CACA,SAASyB,GAAazB,EAAK0B,GACvB,IAAIX,GAAc,EACdT,IA9Hc,GA+HTH,GAAWH,KACZA,EAAIv2C,GAAKy2C,GACTa,GAAed,GAAWD,IAK9Be,GAAef,EAAIj7B,IAAIs7B,IAEvBU,IACAf,EAAI95B,IAAIm6B,IACRA,GAAaM,KAAKp0C,KAAKyzC,GAK/B,CACA,SAAS,GAAQ/rC,EAAQ9C,EAAMO,EAAKiwC,EAAU1C,EAAU2C,GACpD,MAAMJ,EAAUpB,GAAUpoC,IAAI/D,GAC9B,IAAKutC,EAED,OAEJ,IAAIb,EAAO,GACX,GAAa,UAATxvC,EAGAwvC,EAAO,IAAIa,EAAQlyC,eAElB,GAAY,WAARoC,GAAoB,GAAQuC,GACjCutC,EAAQxtB,SAAQ,CAACgsB,EAAKtuC,MACN,WAARA,GAAoBA,GAAOiwC,IAC3BhB,EAAKp0C,KAAKyzC,EACd,SASJ,YAJY,IAARtuC,GACAivC,EAAKp0C,KAAKi1C,EAAQxpC,IAAItG,IAGlBP,GACJ,IAAK,MACI,GAAQ8C,GAMJ0qC,GAAajtC,IAElBivC,EAAKp0C,KAAKi1C,EAAQxpC,IAAI,YAPtB2oC,EAAKp0C,KAAKi1C,EAAQxpC,IAAIuoC,KAClB7B,GAAMzqC,IACN0sC,EAAKp0C,KAAKi1C,EAAQxpC,IAAIwoC,MAO9B,MACJ,IAAK,SACI,GAAQvsC,KACT0sC,EAAKp0C,KAAKi1C,EAAQxpC,IAAIuoC,KAClB7B,GAAMzqC,IACN0sC,EAAKp0C,KAAKi1C,EAAQxpC,IAAIwoC,MAG9B,MACJ,IAAK,MACG9B,GAAMzqC,IACN0sC,EAAKp0C,KAAKi1C,EAAQxpC,IAAIuoC,KAQtC,GAAoB,IAAhBI,EAAK/3C,OACD+3C,EAAK,IAKDkB,GAAelB,EAAK,QAI3B,CACD,MAAMpB,EAAU,GAChB,IAAK,MAAMS,KAAOW,EACVX,GACAT,EAAQhzC,QAAQyzC,GAOpB6B,GAAe9B,GAAUR,GAEjC,CACJ,CACA,SAASsC,GAAe7B,EAAK0B,GAEzB,MAAMnC,EAAU,GAAQS,GAAOA,EAAM,IAAIA,GACzC,IAAK,MAAMY,KAAUrB,EACbqB,EAAOkB,UACPC,GAAcnB,GAGtB,IAAK,MAAMA,KAAUrB,EACZqB,EAAOkB,UACRC,GAAcnB,EAG1B,CACA,SAASmB,GAAcnB,EAAQc,IACvBd,IAAWP,IAAgBO,EAAOoB,gBAI9BpB,EAAOH,UACPG,EAAOH,YAGPG,EAAOlB,MAGnB,CAEA,MAAMuC,GAAmC,GAAQ,+BAC3CC,GAAiB,IAAIr8B,IAE3BzW,OAAO+yC,oBAAoBryC,QAItB4pB,QAAOhoB,GAAe,cAARA,GAA+B,WAARA,IACrCigB,KAAIjgB,GAAO5B,OAAO4B,KAClBgoB,OAAO,KACN1hB,GAAoBoqC,KAEpBC,GAA4BD,IAAa,GAEzCE,GAAsCC,KAC5C,SAASA,KACL,MAAMC,EAAmB,CAAC,EA0B1B,MAzBA,CAAC,WAAY,UAAW,eAAexuB,SAAQtiB,IAC3C8wC,EAAiB9wC,GAAO,YAAamM,GACjC,MAAM5I,EAAM,GAAM5L,MAClB,IAAK,IAAIW,EAAI,EAAGG,EAAId,KAAKT,OAAQoB,EAAIG,EAAGH,IACpCu3C,GAAMtsC,EAAK,EAA8BjL,EAAI,IAGjD,MAAMi0C,EAAMhpC,EAAIvD,MAAQmM,GACxB,OAAa,IAATogC,IAAsB,IAARA,EAEPhpC,EAAIvD,MAAQmM,EAAK8T,IAAI,KAGrBssB,CAEf,CAAC,IAEL,CAAC,OAAQ,MAAO,QAAS,UAAW,UAAUjqB,SAAQtiB,IAClD8wC,EAAiB9wC,GAAO,YAAamM,GACjC,KACA,MAAMogC,EAAM,GAAM50C,MAAMqI,GAAKrD,MAAMhF,KAAMwU,GAEzC,OADA,KACOogC,CACX,CAAC,IAEEuE,CACX,CACA,SAASJ,GAAaK,GAAa,EAAOC,GAAU,GAChD,OAAO,SAAazuC,EAAQvC,EAAKixC,GAC7B,GAAY,mBAARjxC,EACA,OAAQ+wC,EAEP,GAAY,mBAAR/wC,EACL,OAAO+wC,EAEN,GAAY,kBAAR/wC,EACL,OAAOgxC,EAEN,GAAY,YAARhxC,GACLixC,KACKF,EACKC,EACIE,GACAC,GACJH,EACII,GACAC,IAAa/qC,IAAI/D,GAC/B,OAAOA,EAEX,MAAM+uC,EAAgB,GAAQ/uC,GAC9B,IAAKwuC,GAAcO,GAAiB,GAAOV,GAAuB5wC,GAC9D,OAAOuxC,QAAQjrC,IAAIsqC,GAAuB5wC,EAAKixC,GAEnD,MAAM1E,EAAMgF,QAAQjrC,IAAI/D,EAAQvC,EAAKixC,GACrC,OAAI,GAASjxC,GAAOwwC,GAAen9B,IAAIrT,GAAOuwC,GAAmBvwC,IACtDusC,GAENwE,GACDlB,GAAMttC,EAAQ,EAA8BvC,GAE5CgxC,EACOzE,EAEP,GAAMA,GAEC+E,GAAiBrE,GAAajtC,GAAOusC,EAAMA,EAAInwC,MAEtD,GAASmwC,GAIFwE,EAAaS,GAASjF,GAAOkF,GAASlF,GAE1CA,EACX,CACJ,CAGA,SAASmF,GAAaV,GAAU,GAC5B,OAAO,SAAazuC,EAAQvC,EAAK5D,EAAO60C,GACpC,IAAI1D,EAAWhrC,EAAOvC,GACtB,GAAI,GAAWutC,IAAa,GAAMA,KAAc,GAAMnxC,GAClD,OAAO,EAEX,IAAK40C,IACIW,GAAUv1C,IAAW,GAAWA,KACjCmxC,EAAW,GAAMA,GACjBnxC,EAAQ,GAAMA,KAEb,GAAQmG,IAAW,GAAMgrC,KAAc,GAAMnxC,IAE9C,OADAmxC,EAASnxC,MAAQA,GACV,EAGf,MAAMw1C,EAAS,GAAQrvC,IAAW0qC,GAAajtC,GACzC6xC,OAAO7xC,GAAOuC,EAAOrL,OACrB,GAAOqL,EAAQvC,GACfhD,EAASu0C,QAAQn+B,IAAI7Q,EAAQvC,EAAK5D,EAAO60C,GAU/C,OARI1uC,IAAW,GAAM0uC,KACZW,EAGI,GAAWx1C,EAAOmxC,IACvB,GAAQhrC,EAAQ,MAAgCvC,EAAK5D,GAHrD,GAAQmG,EAAQ,MAAgCvC,EAAK5D,IAMtDY,CACX,CACJ,CAqBA,MAAM80C,GAAkB,CACpBxrC,OACA8M,IAxDsBs+B,KAyDtBK,eAvBJ,SAAwBxvC,EAAQvC,GAC5B,MAAM4xC,EAAS,GAAOrvC,EAAQvC,GAExBhD,GADWuF,EAAOvC,GACTuxC,QAAQQ,eAAexvC,EAAQvC,IAI9C,OAHIhD,GAAU40C,GACV,GAAQrvC,EAAQ,SAAsCvC,OAAKmE,GAExDnH,CACX,EAgBIqW,IAfJ,SAAa9Q,EAAQvC,GACjB,MAAMhD,EAASu0C,QAAQl+B,IAAI9Q,EAAQvC,GAInC,OAHK,GAASA,IAASwwC,GAAen9B,IAAIrT,IACtC6vC,GAAMttC,EAAQ,EAA8BvC,GAEzChD,CACX,EAUIg1C,QATJ,SAAiBzvC,GAEb,OADAstC,GAAMttC,EAAQ,EAAsC,GAAQA,GAAU,SAAWssC,IAC1E0C,QAAQS,QAAQzvC,EAC3B,GAQM0vC,GAAmB,CACrB3rC,IAAKqqC,GACLv9B,IAAG,CAAC7Q,EAAQvC,KAID,EAEX+xC,eAAc,CAACxvC,EAAQvC,KAIZ,GAcTkyC,GAAa91C,GAAUA,EACvBg2B,GAAYhH,GAAMmmB,QAAQlf,eAAejH,GAC/C,SAAS+mB,GAAM5vC,EAAQvC,EAAK+wC,GAAa,EAAOY,GAAY,GAIxD,MAAMS,EAAY,GADlB7vC,EAASA,EAAwC,SAE3C8vC,EAAS,GAAMryC,GAChB+wC,IACG/wC,IAAQqyC,GACRxC,GAAMuC,EAAW,EAA8BpyC,GAEnD6vC,GAAMuC,EAAW,EAA8BC,IAEnD,MAAM,IAAEh/B,GAAQ+e,GAASggB,GACnB/gB,EAAOsgB,EAAYO,GAAYnB,EAAauB,GAAaC,GAC/D,OAAIl/B,EAAI3a,KAAK05C,EAAWpyC,GACbqxB,EAAK9uB,EAAO+D,IAAItG,IAElBqT,EAAI3a,KAAK05C,EAAWC,GAClBhhB,EAAK9uB,EAAO+D,IAAI+rC,SAElB9vC,IAAW6vC,GAGhB7vC,EAAO+D,IAAItG,GAEnB,CACA,SAASwyC,GAAMxyC,EAAK+wC,GAAa,GAC7B,MAAMxuC,EAAS5K,KAAsC,QAC/Cy6C,EAAY,GAAM7vC,GAClB8vC,EAAS,GAAMryC,GAOrB,OANK+wC,IACG/wC,IAAQqyC,GACRxC,GAAMuC,EAAW,EAA8BpyC,GAEnD6vC,GAAMuC,EAAW,EAA8BC,IAE5CryC,IAAQqyC,EACT9vC,EAAO8Q,IAAIrT,GACXuC,EAAO8Q,IAAIrT,IAAQuC,EAAO8Q,IAAIg/B,EACxC,CACA,SAASllC,GAAK5K,EAAQwuC,GAAa,GAG/B,OAFAxuC,EAASA,EAAwC,SAChDwuC,GAAclB,GAAM,GAAMttC,GAAS,EAAsCssC,IACnE0C,QAAQjrC,IAAI/D,EAAQ,OAAQA,EACvC,CACA,SAASiS,GAAIpY,GACTA,EAAQ,GAAMA,GACd,MAAMmG,EAAS,GAAM5K,MAOrB,OANcy6B,GAAS7vB,GACF8Q,IAAI3a,KAAK6J,EAAQnG,KAElCmG,EAAOiS,IAAIpY,GACX,GAAQmG,EAAQ,MAAgCnG,EAAOA,IAEpDzE,IACX,CACA,SAAS86C,GAAMzyC,EAAK5D,GAChBA,EAAQ,GAAMA,GACd,MAAMmG,EAAS,GAAM5K,OACf,IAAE0b,EAAG,IAAE/M,GAAQ8rB,GAAS7vB,GAC9B,IAAIqvC,EAASv+B,EAAI3a,KAAK6J,EAAQvC,GACzB4xC,IACD5xC,EAAM,GAAMA,GACZ4xC,EAASv+B,EAAI3a,KAAK6J,EAAQvC,IAK9B,MAAMutC,EAAWjnC,EAAI5N,KAAK6J,EAAQvC,GAQlC,OAPAuC,EAAO6Q,IAAIpT,EAAK5D,GACXw1C,EAGI,GAAWx1C,EAAOmxC,IACvB,GAAQhrC,EAAQ,MAAgCvC,EAAK5D,GAHrD,GAAQmG,EAAQ,MAAgCvC,EAAK5D,GAKlDzE,IACX,CACA,SAAS+6C,GAAY1yC,GACjB,MAAMuC,EAAS,GAAM5K,OACf,IAAE0b,EAAG,IAAE/M,GAAQ8rB,GAAS7vB,GAC9B,IAAIqvC,EAASv+B,EAAI3a,KAAK6J,EAAQvC,GACzB4xC,IACD5xC,EAAM,GAAMA,GACZ4xC,EAASv+B,EAAI3a,KAAK6J,EAAQvC,IAKbsG,GAAMA,EAAI5N,KAAK6J,EAAQvC,GAAxC,MAEMhD,EAASuF,EAAOupC,OAAO9rC,GAI7B,OAHI4xC,GACA,GAAQrvC,EAAQ,SAAsCvC,OAAKmE,GAExDnH,CACX,CACA,SAAS4K,KACL,MAAMrF,EAAS,GAAM5K,MACfg7C,EAA2B,IAAhBpwC,EAAO4K,KAOlBnQ,EAASuF,EAAOqF,QAItB,OAHI+qC,GACA,GAAQpwC,EAAQ,aAAoC4B,OAAWA,GAE5DnH,CACX,CACA,SAAS41C,GAAc7B,EAAYY,GAC/B,OAAO,SAAiB/xC,EAAUoV,GAC9B,MAAM69B,EAAWl7C,KACX4K,EAASswC,EAA0C,QACnDT,EAAY,GAAM7vC,GAClB8uB,EAAOsgB,EAAYO,GAAYnB,EAAauB,GAAaC,GAE/D,OADCxB,GAAclB,GAAMuC,EAAW,EAAsCvD,IAC/DtsC,EAAO+f,SAAQ,CAAClmB,EAAO4D,IAInBJ,EAASlH,KAAKsc,EAASqc,EAAKj1B,GAAQi1B,EAAKrxB,GAAM6yC,IAE9D,CACJ,CACA,SAASC,GAAqBrgB,EAAQse,EAAYY,GAC9C,OAAO,YAAaxlC,GAChB,MAAM5J,EAAS5K,KAAsC,QAC/Cy6C,EAAY,GAAM7vC,GAClBwwC,EAAc/F,GAAMoF,GACpBY,EAAoB,YAAXvgB,GAAyBA,IAAWr0B,OAAOC,UAAY00C,EAChEE,EAAuB,SAAXxgB,GAAqBsgB,EACjCG,EAAgB3wC,EAAOkwB,MAAWtmB,GAClCklB,EAAOsgB,EAAYO,GAAYnB,EAAauB,GAAaC,GAK/D,OAJCxB,GACGlB,GAAMuC,EAAW,EAAsCa,EAAYnE,GAAsBD,IAGtF,CAEHjb,OACI,MAAM,MAAEx3B,EAAK,KAAE+2B,GAAS+f,EAActf,OACtC,OAAOT,EACD,CAAE/2B,QAAO+2B,QACT,CACE/2B,MAAO42C,EAAS,CAAC3hB,EAAKj1B,EAAM,IAAKi1B,EAAKj1B,EAAM,KAAOi1B,EAAKj1B,GACxD+2B,OAEZ,EAEA,CAAC/0B,OAAOC,YACJ,OAAO1G,IACX,EAER,CACJ,CACA,SAASw7C,GAAqB1zC,GAC1B,OAAO,YAAa0M,GAKhB,MAAgB,WAAT1M,GAAwD9H,IACnE,CACJ,CACA,SAASy7C,KACL,MAAMC,EAA0B,CAC5B/sC,IAAItG,GACA,OAAOmyC,GAAMx6C,KAAMqI,EACvB,EACImN,WACA,OAAOA,GAAKxV,KAChB,EACA0b,IAAKm/B,GACLh+B,OACApB,IAAKq/B,GACL3G,OAAQ4G,GACR9qC,SACA0a,QAASswB,IAAc,GAAO,IAE5BU,EAA0B,CAC5BhtC,IAAItG,GACA,OAAOmyC,GAAMx6C,KAAMqI,GAAK,GAAO,EACnC,EACImN,WACA,OAAOA,GAAKxV,KAChB,EACA0b,IAAKm/B,GACLh+B,OACApB,IAAKq/B,GACL3G,OAAQ4G,GACR9qC,SACA0a,QAASswB,IAAc,GAAO,IAE5BW,EAA2B,CAC7BjtC,IAAItG,GACA,OAAOmyC,GAAMx6C,KAAMqI,GAAK,EAC5B,EACImN,WACA,OAAOA,GAAKxV,MAAM,EACtB,EACA0b,IAAIrT,GACA,OAAOwyC,GAAM95C,KAAKf,KAAMqI,GAAK,EACjC,EACAwU,IAAK2+B,GAAqB,OAC1B//B,IAAK+/B,GAAqB,OAC1BrH,OAAQqH,GAAqB,UAC7BvrC,MAAOurC,GAAqB,SAC5B7wB,QAASswB,IAAc,GAAM,IAE3BY,EAAkC,CACpCltC,IAAItG,GACA,OAAOmyC,GAAMx6C,KAAMqI,GAAK,GAAM,EAClC,EACImN,WACA,OAAOA,GAAKxV,MAAM,EACtB,EACA0b,IAAIrT,GACA,OAAOwyC,GAAM95C,KAAKf,KAAMqI,GAAK,EACjC,EACAwU,IAAK2+B,GAAqB,OAC1B//B,IAAK+/B,GAAqB,OAC1BrH,OAAQqH,GAAqB,UAC7BvrC,MAAOurC,GAAqB,SAC5B7wB,QAASswB,IAAc,GAAM,IASjC,MAPwB,CAAC,OAAQ,SAAU,UAAWx0C,OAAOC,UAC7CikB,SAAQmQ,IACpB4gB,EAAwB5gB,GAAUqgB,GAAqBrgB,GAAQ,GAAO,GACtE8gB,EAAyB9gB,GAAUqgB,GAAqBrgB,GAAQ,GAAM,GACtE6gB,EAAwB7gB,GAAUqgB,GAAqBrgB,GAAQ,GAAO,GACtE+gB,EAAgC/gB,GAAUqgB,GAAqBrgB,GAAQ,GAAM,EAAK,IAE/E,CACH4gB,EACAE,EACAD,EACAE,EAER,CACA,MAAOH,GAAyBE,GAA0BD,GAAyBE,IAAkDJ,KACrI,SAASK,GAA4B1C,EAAYC,GAC7C,MAAMF,EAAmBE,EACnBD,EACIyC,GACAF,GACJvC,EACIwC,GACAF,GACV,MAAO,CAAC9wC,EAAQvC,EAAKixC,IACL,mBAARjxC,GACQ+wC,EAEK,mBAAR/wC,EACE+wC,EAEM,YAAR/wC,EACEuC,EAEJgvC,QAAQjrC,IAAI,GAAOwqC,EAAkB9wC,IAAQA,KAAOuC,EACrDuuC,EACAvuC,EAAQvC,EAAKixC,EAE3B,CACA,MAAMyC,GAA4B,CAC9BptC,IAAmBmtC,IAA4B,GAAO,IAKpDE,GAA6B,CAC/BrtC,IAAmBmtC,IAA4B,GAAM,IAiBnDpC,GAAc,IAAIt8B,QAClBq8B,GAAqB,IAAIr8B,QACzBo8B,GAAc,IAAIp8B,QAClBm8B,GAAqB,IAAIn8B,QAoB/B,SAAS08B,GAASlvC,GAEd,OAAI,GAAWA,GACJA,EAEJqxC,GAAqBrxC,GAAQ,EAAOuvC,GAAiB4B,GAA2BrC,GAC3F,CAaA,SAASG,GAASjvC,GACd,OAAOqxC,GAAqBrxC,GAAQ,EAAM0vC,GAAkB0B,GAA4BxC,GAC5F,CAUA,SAASyC,GAAqBrxC,EAAQwuC,EAAY8C,EAAcC,EAAoBC,GAChF,IAAK,GAASxxC,GAIV,OAAOA,EAIX,GAAIA,EAAwC,WACtCwuC,IAAcxuC,EAAuD,gBACvE,OAAOA,EAGX,MAAMyxC,EAAgBD,EAASztC,IAAI/D,GACnC,GAAIyxC,EACA,OAAOA,EAGX,MAAMC,GAvDa73C,EAuDcmG,GAtDe,WAAM7E,OAAOw2C,aAAa93C,GACpE,EAhBV,SAAuB+3C,GACnB,OAAQA,GACJ,IAAK,SACL,IAAK,QACD,OAAO,EACX,IAAK,MACL,IAAK,MACL,IAAK,UACL,IAAK,UACD,OAAO,EACX,QACI,OAAO,EAEnB,CAIUC,CD/XQ,CAACh4C,GAER,GAAaA,GAAO4I,MAAM,GAAI,GC6XjB,CAAU5I,IAHlC,IAAuBA,EAwDnB,GAAmB,IAAf63C,EACA,OAAO1xC,EAEX,MAAM8xC,EAAQ,IAAIC,MAAM/xC,EAAuB,IAAf0xC,EAA+CH,EAAqBD,GAEpG,OADAE,EAAS3gC,IAAI7Q,EAAQ8xC,GACdA,CACX,CACA,SAAS,GAAWj4C,GAChB,OAAI,GAAWA,GACJ,GAAWA,EAAuC,YAEnDA,IAASA,EAAsD,eAC7E,CACA,SAAS,GAAWA,GAChB,SAAUA,IAASA,EAAsD,eAC7E,CACA,SAASu1C,GAAUv1C,GACf,SAAUA,IAASA,EAAoD,cAC3E,CACA,SAASm4C,GAAQn4C,GACb,OAAO,GAAWA,IAAU,GAAWA,EAC3C,CACA,SAAS,GAAMy2C,GACX,MAAM2B,EAAM3B,GAAYA,EAA0C,QAClE,OAAO2B,EAAM,GAAMA,GAAO3B,CAC9B,CACA,SAAS4B,GAAQr4C,GAEb,MD9ZQ,EAACK,EAAKuD,EAAK5D,KACnBsB,OAAOye,eAAe1f,EAAKuD,EAAK,CAC5BmxB,cAAc,EACdD,YAAY,EACZ90B,SACF,ECwZFs4C,CAAIt4C,EAAO,YAAqC,GACzCA,CACX,CACA,MAAMm2C,GAAcn2C,GAAU,GAASA,GAASq1C,GAASr1C,GAASA,EAC5Dk2C,GAAcl2C,GAAU,GAASA,GAASo1C,GAASp1C,GAASA,EAElE,SAASu4C,GAAcC,GACfvF,IAAeV,IAUXoB,IATJ6E,EAAM,GAAMA,IASStG,MAAQsG,EAAItG,IAAMD,MAG/C,CACA,SAASwG,GAAgBD,EAAKE,IAC1BF,EAAM,GAAMA,IACJtG,KAUA6B,GAAeyE,EAAItG,IAG/B,CACA,SAAS,GAAMt2C,GACX,SAAUA,IAAqB,IAAhBA,EAAE+8C,UACrB,CACA,SAAS,GAAI34C,GACT,OAAO44C,GAAU54C,GAAO,EAC5B,CAIA,SAAS44C,GAAUC,EAAUjE,GACzB,OAAI,GAAMiE,GACCA,EAEJ,IAAIC,GAAQD,EAAUjE,EACjC,CACA,MAAMkE,GACF73C,YAAYjB,EAAO+4C,GACfx9C,KAAKw9C,cAAgBA,EACrBx9C,KAAK22C,SAAMnqC,EACXxM,KAAKo9C,WAAY,EACjBp9C,KAAKy9C,UAAYD,EAAgB/4C,EAAQ,GAAMA,GAC/CzE,KAAK09C,OAASF,EAAgB/4C,EAAQm2C,GAAWn2C,EACrD,CACIA,YAEA,OADAu4C,GAAch9C,MACPA,KAAK09C,MAChB,CACIj5C,UAAM04C,GACN,MAAMQ,EAAiB39C,KAAKw9C,eAAiBxD,GAAUmD,IAAW,GAAWA,GAC7EA,EAASQ,EAAiBR,EAAS,GAAMA,GACrC,GAAWA,EAAQn9C,KAAKy9C,aACxBz9C,KAAKy9C,UAAYN,EACjBn9C,KAAK09C,OAASC,EAAiBR,EAASvC,GAAWuC,GACnDD,GAAgBl9C,MAExB,EAQJ,MAAM49C,GAAwB,CAC1BjvC,IAAK,CAAC/D,EAAQvC,EAAKixC,KAAauE,OAHzB,GADIZ,EAI2BrD,QAAQjrC,IAAI/D,EAAQvC,EAAKixC,IAH3C2D,EAAIx4C,MAAQw4C,EADpC,IAAeA,CAI8D,EACzExhC,IAAK,CAAC7Q,EAAQvC,EAAK5D,EAAO60C,KACtB,MAAM1D,EAAWhrC,EAAOvC,GACxB,OAAI,GAAMutC,KAAc,GAAMnxC,IAC1BmxC,EAASnxC,MAAQA,GACV,GAGAm1C,QAAQn+B,IAAI7Q,EAAQvC,EAAK5D,EAAO60C,EAC3C,GA0DR,IAAIwE,GACJ,MAAMC,GACFr4C,YAAY45B,EAAQ0e,EAAS5E,EAAY6E,GACrCj+C,KAAKg+C,QAAUA,EACfh+C,KAAK22C,SAAMnqC,EACXxM,KAAKo9C,WAAY,EACjBp9C,KAAK89C,KAAM,EACX99C,KAAKk+C,QAAS,EACdl+C,KAAKu3C,OAAS,IAAI,GAAejY,GAAQ,KAChCt/B,KAAKk+C,SACNl+C,KAAKk+C,QAAS,EACdhB,GAAgBl9C,MACpB,IAEJA,KAAKu3C,OAAOkB,SAAWz4C,KACvBA,KAAKu3C,OAAOtB,OAASj2C,KAAKm+C,YAAcF,EACxCj+C,KAAqD,eAAIo5C,CAC7D,CACI30C,YAEA,MAAM1E,EAAO,GAAMC,MAMnB,OALAg9C,GAAcj9C,IACVA,EAAKm+C,QAAWn+C,EAAKo+C,aACrBp+C,EAAKm+C,QAAS,EACdn+C,EAAK29C,OAAS39C,EAAKw3C,OAAOlB,OAEvBt2C,EAAK29C,MAChB,CACIj5C,UAAM6zC,GACNt4C,KAAKg+C,QAAQ1F,EACjB,EC3+BJ,SAAS8F,GAAsBntB,EAAI7Y,EAAUtQ,EAAM0M,GAC/C,IAAIogC,EACJ,IACIA,EAAMpgC,EAAOyc,KAAMzc,GAAQyc,GAI/B,CAFA,MAAOznB,GACH60C,GAAY70C,EAAK4O,EAAUtQ,EAC/B,CACA,OAAO8sC,CACX,CACA,SAAS0J,GAA2BrtB,EAAI7Y,EAAUtQ,EAAM0M,GACpD,GAAI,GAAWyc,GAAK,CAChB,MAAM2jB,EAAMwJ,GAAsBntB,EAAI7Y,EAAUtQ,EAAM0M,GAMtD,OALIogC,IFyVD,GADQnX,EExVUmX,IFyVD,GAAWnX,EAAI14B,OAAS,GAAW04B,EAAI8gB,SExVvD3J,EAAI2J,OAAM/0C,IACN60C,GAAY70C,EAAK4O,EAAUtQ,EAAK,IAGjC8sC,CACX,CFkVc,IAACnX,EEjVf,MAAMx3B,EAAS,GACf,IAAK,IAAItF,EAAI,EAAGA,EAAIswB,EAAG1xB,OAAQoB,IAC3BsF,EAAO/C,KAAKo7C,GAA2BrtB,EAAGtwB,GAAIyX,EAAUtQ,EAAM0M,IAElE,OAAOvO,CACX,CACA,SAASo4C,GAAY70C,EAAK4O,EAAUtQ,EAAM02C,GAAa,GAEnD,GADqBpmC,GAAWA,EAASqmC,MACrCrmC,EAAU,CACV,IAAIsmC,EAAMtmC,EAASu5B,OAEnB,MAAMgN,EAAkBvmC,EAASskC,MAE3BkC,EAA+E92C,EACrF,KAAO42C,GAAK,CACR,MAAMG,EAAqBH,EAAII,GAC/B,GAAID,EACA,IAAK,IAAIl+C,EAAI,EAAGA,EAAIk+C,EAAmBt/C,OAAQoB,IAC3C,IAA+D,IAA3Dk+C,EAAmBl+C,GAAG6I,EAAKm1C,EAAiBC,GAC5C,OAIZF,EAAMA,EAAI/M,MACd,CAEA,MAAMoN,EAAkB3mC,EAAS4mC,WAAWvuC,OAAOwuC,aACnD,GAAIF,EAEA,YADAX,GAAsBW,EAAiB,KAAM,GAAuC,CAACv1C,EAAKm1C,EAAiBC,GAGnH,EAGJ,SAAkBp1C,EAAK1B,EAAMo3C,EAAcV,GAAa,GAoBhDl2C,QAAQ3C,MAAM6D,EAEtB,CAxBI21C,CAAS31C,EAAK1B,EAAMo3C,EAAcV,EACtC,CDw7BAV,GAAK,iBC/5BL,IAAIsB,IAAa,EACbC,IAAiB,EACrB,MAAM,GAAQ,GACd,IAAIC,GAAa,EACjB,MAAMC,GAAsB,GAC5B,IAAIC,GAAqB,KACrBC,GAAiB,EACrB,MAAMC,GAAgCj8C,QAAQmB,UAC9C,IAAI+6C,GAAsB,KAE1B,SAASn+C,GAASyvB,GACd,MAAMve,EAAIitC,IAAuBD,GACjC,OAAOzuB,EAAKve,EAAE3N,KAAK/E,KAAOixB,EAAG2uB,KAAK5/C,MAAQixB,GAAMve,CACpD,CAgBA,SAASmtC,GAASC,GAOT,GAAMvgD,QACN,GAAMgX,SAASupC,EAAKV,IAAcU,EAAInH,aAAe2G,GAAa,EAAIA,MACzD,MAAVQ,EAAI3gB,GACJ,GAAMj8B,KAAK48C,GAGX,GAAMr1B,OAxBlB,SAA4B0U,GAExB,IAAI7a,EAAQg7B,GAAa,EACrBS,EAAM,GAAMxgD,OAChB,KAAO+kB,EAAQy7B,GAAK,CAChB,MAAMC,EAAU17B,EAAQy7B,IAAS,EACbE,GAAM,GAAMD,IAClB7gB,EAAM7a,EAAQ07B,EAAS,EAAMD,EAAMC,CACrD,CACA,OAAO17B,CACX,CAcyB47B,CAAmBJ,EAAI3gB,IAAK,EAAG2gB,GAEhDK,KAER,CACA,SAASA,KACAf,IAAeC,KAChBA,IAAiB,EACjBM,GAAsBD,GAAgB36C,KAAKq7C,IAEnD,CAiEA,MAAMH,GAASH,GAAkB,MAAVA,EAAI3gB,GAAakhB,IAAWP,EAAI3gB,GACjDmhB,GAAa,CAAC7/C,EAAG8/C,KACnB,MAAMC,EAAOP,GAAMx/C,GAAKw/C,GAAMM,GAC9B,GAAa,IAATC,EAAY,CACZ,GAAI//C,EAAEggD,MAAQF,EAAEE,IACZ,OAAQ,EACZ,GAAIF,EAAEE,MAAQhgD,EAAEggD,IACZ,OAAO,CACf,CACA,OAAOD,CAAI,EAEf,SAASJ,GAAUz5B,GACf04B,IAAiB,EACjBD,IAAa,EAWb,GAAMz6B,KAAK27B,IASX,IACI,IAAKhB,GAAa,EAAGA,GAAa,GAAM//C,OAAQ+/C,KAAc,CAC1D,MAAMQ,EAAM,GAAMR,IACdQ,IAAsB,IAAfA,EAAI7J,QAKXmI,GAAsB0B,EAAK,KAAM,GAEzC,CAaJ,CAXA,QACIR,GAAa,EACb,GAAM//C,OAAS,EAxEvB,SAA2BonB,GACvB,GAAI44B,GAAoBhgD,OAAQ,CAC5B,MAAMmhD,EAAU,IAAI,IAAIlkC,IAAI+iC,KAG5B,GAFAA,GAAoBhgD,OAAS,EAEzBigD,GAEA,YADAA,GAAmBt8C,QAAQw9C,GAQ/B,IALAlB,GAAqBkB,EAIrBlB,GAAmB76B,MAAK,CAAClkB,EAAG8/C,IAAMN,GAAMx/C,GAAKw/C,GAAMM,KAC9Cd,GAAiB,EAAGA,GAAiBD,GAAmBjgD,OAAQkgD,KAKjED,GAAmBC,MAEvBD,GAAqB,KACrBC,GAAiB,CACrB,CACJ,CAiDQkB,GACAvB,IAAa,EACbO,GAAsB,MAGlB,GAAMpgD,QAAUggD,GAAoBhgD,SACpC6gD,GAAUz5B,EAElB,CACJ,CAyB2B,IAAInK,IAanB,IAAIP,IAgWhB,IAAI2kC,GAA2B,KAy2B/B,MAAMC,GAAwB,CAAC,EAE/B,SAASC,GAAMn/B,EAAQo/B,EAAI/zC,GAMvB,OAAOg0C,GAAQr/B,EAAQo/B,EAAI/zC,EAC/B,CACA,SAASg0C,GAAQr/B,EAAQo/B,GAAI,UAAE59C,EAAS,KAAE89C,EAAI,MAAEC,EAAK,QAAEC,EAAO,UAAEC,GAAc,IAW1E,MAIMhpC,EAAWipC,GACjB,IAAI/hB,EAuDAgiB,EAtDAC,GAAe,EACfC,GAAgB,EAiDpB,GAhDI,GAAM7/B,IACN2d,EAAS,IAAM3d,EAAOld,MACtB88C,EAAevH,GAAYr4B,IAEtB,GAAWA,IAChB2d,EAAS,IAAM3d,EACfs/B,GAAO,GAEF,GAAQt/B,IACb6/B,GAAgB,EAChBD,EAAe5/B,EAAO8/B,MAAKnhD,GAAK,GAAWA,IAAM05C,GAAY15C,KAC7Dg/B,EAAS,IAAM3d,EAAO2G,KAAIhoB,GAClB,GAAMA,GACCA,EAAEmE,MAEJ,GAAWnE,GACTohD,GAASphD,GAEX,GAAWA,GACT89C,GAAsB99C,EAAG8X,EAAU,QADzC,KAWLknB,EAHC,GAAW3d,GACZo/B,EAES,IAAM3C,GAAsBz8B,EAAQvJ,EAAU,GAI9C,KACL,IAAIA,IAAYA,EAASupC,YAMzB,OAHIL,GACAA,IAEGhD,GAA2B38B,EAAQvJ,EAAU,EAAmC,CAACwpC,GAAW,EAKlG,GAGTb,GAAME,EAAM,CACZ,MAAMY,EAAaviB,EACnBA,EAAS,IAAMoiB,GAASG,IAC5B,CAEA,IAAID,EAAa3wB,IACbqwB,EAAU/J,EAAOS,OAAS,KACtBoG,GAAsBntB,EAAI7Y,EAAU,EAAiC,CACxE,EAIL,GAAI0pC,GAaA,OAXAF,EAAY,GACPb,EAGI59C,GACLm7C,GAA2ByC,EAAI3oC,EAAU,EAAmC,CACxEknB,IACAkiB,EAAgB,QAAKh1C,EACrBo1C,IANJtiB,IASG,GAEX,IAAIsW,EAAW4L,EAAgB,GAAKX,GACpC,MAAMf,EAAM,KACR,GAAKvI,EAAOtB,OAGZ,GAAI8K,EAAI,CAEJ,MAAMzI,EAAWf,EAAOlB,OACpB4K,GACAM,IACCC,EACKlJ,EAASmJ,MAAK,CAAChuB,EAAG9yB,IAAM,GAAW8yB,EAAGmiB,EAASj1C,MAC/C,GAAW23C,EAAU1C,OAGvB0L,GACAA,IAEJhD,GAA2ByC,EAAI3oC,EAAU,EAAmC,CACxEkgC,EAEA1C,IAAaiL,QAAwBr0C,EAAYopC,EACjDgM,IAEJhM,EAAW0C,EAEnB,MAGIf,EAAOlB,KACX,EAKJ,IAAIe,EADJ0I,EAAInH,eAAiBoI,EAEP,SAAVG,EACA9J,EAAY0I,EAEG,SAAVoB,EACL9J,EAAY,IAAM2K,GAAsBjC,EAAK1nC,GAAYA,EAAS4pC,WAIlElC,EAAIW,KAAM,EACNroC,IACA0nC,EAAI3gB,GAAK/mB,EAASiS,KACtB+sB,EAAY,IAAMyI,GAASC,IAE/B,MAAMvI,EAAS,IAAI,GAAejY,EAAQ8X,GAoB1C,OAdI2J,EACI59C,EACA28C,IAGAlK,EAAW2B,EAAOlB,MAGP,SAAV6K,EACLa,GAAsBxK,EAAOlB,IAAIuJ,KAAKrI,GAASn/B,GAAYA,EAAS4pC,UAGpEzK,EAAOlB,MAEJ,KACHkB,EAAO1Z,OACHzlB,GAAYA,EAASi/B,OFr0ClB,EAACzrC,EAAKq2C,KACjB,MAAMthD,EAAIiL,EAAIqC,QAAQg0C,GAClBthD,GAAK,GACLiL,EAAI6e,OAAO9pB,EAAG,EAClB,EEk0CQ,CAAOyX,EAASi/B,MAAMnB,QAASqB,EACnC,CAER,CAEA,SAAS2K,GAAcvgC,EAAQld,EAAOuI,GAClC,MAAMm1C,EAAaniD,KAAK08C,MAClBpd,EAAS,GAAS3d,GAClBA,EAAOpL,SAAS,KAuB1B,SAA0BlY,EAAKihB,GAC3B,MAAM8iC,EAAW9iC,EAAKkQ,MAAM,KAC5B,MAAO,KACH,IAAIkvB,EAAMrgD,EACV,IAAK,IAAIsC,EAAI,EAAGA,EAAIyhD,EAAS7iD,QAAUm/C,EAAK/9C,IACxC+9C,EAAMA,EAAI0D,EAASzhD,IAEvB,OAAO+9C,CAAG,CAElB,CA/Bc2D,CAAiBF,EAAYxgC,GAC7B,IAAMwgC,EAAWxgC,GACrBA,EAAOi+B,KAAKuC,EAAYA,GAC9B,IAAIpB,EACA,GAAWt8C,GACXs8C,EAAKt8C,GAGLs8C,EAAKt8C,EAAM69C,QACXt1C,EAAUvI,GAEd,MAAMi6C,EAAM2C,GACZkB,GAAmBviD,MACnB,MAAM40C,EAAMoM,GAAQ1hB,EAAQyhB,EAAGnB,KAAKuC,GAAan1C,GAOjD,OANI0xC,EACA6D,GAAmB7D,GAGnB8D,KAEG5N,CACX,CAWA,SAAS8M,GAASj9C,EAAOkiB,GACrB,IAAK,GAASliB,IAAUA,EAAyC,SAC7D,OAAOA,EAGX,IADAkiB,EAAOA,GAAQ,IAAInK,KACVd,IAAIjX,GACT,OAAOA,EAGX,GADAkiB,EAAK9J,IAAIpY,GACL,GAAMA,GACNi9C,GAASj9C,EAAMA,MAAOkiB,QAErB,GAAI,GAAQliB,GACb,IAAK,IAAI9D,EAAI,EAAGA,EAAI8D,EAAMlF,OAAQoB,IAC9B+gD,GAASj9C,EAAM9D,GAAIgmB,QAGtB,GFt3CoC,iBAAtB,GEs3CJliB,IAAU4wC,GAAM5wC,GAC3BA,EAAMkmB,SAAS8I,IACXiuB,GAASjuB,EAAG9M,EAAK,SAGpB,GF52Ca,CAAC8W,GAA8B,oBAAtB,GAAaA,GE42C/B,CAAch5B,GACnB,IAAK,MAAM4D,KAAO5D,EACdi9C,GAASj9C,EAAM4D,GAAMse,GAG7B,OAAOliB,CACX,CAsBgBwlC,QACGA,QAmdOtnB,OACAA,OA6T1B,MAAM8/B,GAAcC,GAAc,CAAChW,EAAM9hC,EAASy2C,OAEhDS,IAAuC,OAAdY,IA3C3B,SAAoB56C,EAAM4kC,EAAM9hC,EAASy2C,GAAiBsB,GAAU,GAChE,GAAI/3C,EAAQ,CACR,MAAMg4C,EAAQh4C,EAAO9C,KAAU8C,EAAO9C,GAAQ,IAIxC+6C,EAAcnW,EAAKoW,QACpBpW,EAAKoW,MAAQ,IAAItuC,KACd,GAAI5J,EAAO+2C,YACP,OAIJ,KAIAY,GAAmB33C,GACnB,MAAMgqC,EAAM0J,GAA2B5R,EAAM9hC,EAAQ9C,EAAM0M,GAG3D,OAFAguC,KACA,KACO5N,CAAG,GAQlB,OANI+N,EACAC,EAAMzrB,QAAQ0rB,GAGdD,EAAM1/C,KAAK2/C,GAERA,CACX,CAUJ,CAIIE,CAAWL,GAAW,IAAIluC,IAASk4B,KAAQl4B,IAAO5J,GAChDo4C,GAAgBP,GAAW,MAC3BQ,GAAYR,GAAW,KAIvBS,IAHiBT,GAAW,MAChBA,GAAW,KACLA,GAAW,OACfA,GAAW,OACNA,GAAW,MACVA,GAAW,OACbA,GAAW,OAwFnC,MAAMU,GAAyB18C,SA+NzB28C,GAAqBziD,GAClBA,EAygI6B,EAvgIVA,EAugIR89C,MAAM4E,UA+P1B,SAAwBjrC,GACpB,GAAIA,EAASkrC,QACT,OAAQlrC,EAASmrC,cACZnrC,EAASmrC,YAAc,IAAI5G,ODjsMrB6G,ECisMqC1G,GAAQ1kC,EAASkrC,SDhsM9D,GAAWE,GACZA,EACA,IAAI7G,MAAM6G,EAAgB5F,KC8rMgD,CACpEjvC,IAAG,CAAC/D,EAAQvC,IACJA,KAAOuC,EACAA,EAAOvC,GAETA,KAAOo7C,GACLA,GAAoBp7C,GAAK+P,QAD/B,KDtsMzB,IAAmBorC,CC4sMnB,CAnxIeE,CAAe/iD,IAAMA,EAAE+7C,MAC3B0G,GAAkBziD,EAAEgxC,QAHhB,KAKT8R,GAGQ,GAAO19C,OAAOk0B,OAAO,MAAO,CACtC0pB,EAAGhjD,GAAKA,EACRijD,IAAKjjD,GAAKA,EAAE89C,MAAMwD,GAClB4B,MAAOljD,GAAKA,EAAEmB,KACdgiD,OAAQnjD,GAA2EA,EAAEukB,MACrF6+B,OAAQpjD,GAA2EA,EAAEqjD,MACrFC,OAAQtjD,GAA2EA,EAAEujD,MACrFC,MAAOxjD,GAA0EA,EAAEyjD,KACnFC,QAAS1jD,GAAKyiD,GAAkBziD,EAAEgxC,QAClC2S,MAAO3jD,GAAKyiD,GAAkBziD,EAAEirB,MAChC24B,MAAO5jD,GAAKA,EAAEisC,KACd4X,SAAU7jD,GA2iBd,SAA8ByX,GAC1B,MAAMoY,EAAOpY,EAAStQ,MAChB,OAAE28C,EAAQC,QAASC,GAAmBn0B,GACpCi0B,OAAQG,EAAcC,aAAc1/B,EAAO1U,QAAQ,sBAAEq0C,IAA4B1sC,EAAS4mC,WAC5F+F,EAAS5/B,EAAMxW,IAAI6hB,GACzB,IAAIrqB,EAmBJ,OAlBI4+C,EACA5+C,EAAW4+C,EAELH,EAAarlD,QAAWklD,GAAWE,GAMzCx+C,EAAW,CAAC,EACRy+C,EAAarlD,QACbqlD,EAAaj6B,SAAQ+E,GAAKs1B,GAAa7+C,EAAUupB,EAAGo1B,GAAuB,KAE/EE,GAAa7+C,EAAUqqB,EAAMs0B,IARzB3+C,EAAWqqB,EAUf,GAASA,IACTrL,EAAM1J,IAAI+U,EAAMrqB,GAEbA,CACX,CApkB0C8+C,CAAqBtkD,GAC3DukD,aAAcvkD,GAAKA,EAAEjB,IAAMiB,EAAEjB,EAAI,IAAMmgD,GAASl/C,EAAEwkD,SAClDC,UAAWzkD,GAAKA,EAAEP,IAAMO,EAAEP,EAAIoB,GAASo+C,KAAKj/C,EAAE+7C,QAC9C2I,OAAQ1kD,GAA4BuhD,GAActC,KAAKj/C,KAkkB3D,SAASqkD,GAAa1S,EAAID,EAAMiT,EAAQC,GAAU,GAC9C,MAAM,OAAEd,EAAQC,QAASC,GAAmBtS,EACxCsS,GACAK,GAAa1S,EAAIqS,EAAgBW,GAAQ,GAEzCb,GACAA,EAAO95B,SAAS+E,GAAMs1B,GAAa1S,EAAI5iB,EAAG41B,GAAQ,KAEtD,IAAK,MAAMj9C,KAAOgqC,EACd,GAAIkT,GAAmB,WAARl9C,OAKV,CACD,MAAMm9C,EAAQC,GAA0Bp9C,IAASi9C,GAAUA,EAAOj9C,GAClEiqC,EAAGjqC,GAAOm9C,EAAQA,EAAMlT,EAAGjqC,GAAMgqC,EAAKhqC,IAAQgqC,EAAKhqC,EACvD,CAEJ,OAAOiqC,CACX,CACA,MAAMmT,GAA4B,CAC9B3jD,KAAM4jD,GACNxgC,MAAOygC,GACPC,MAAOD,GAEPE,QAASF,GACTlN,SAAUkN,GAEVG,aAAcC,GACdC,QAASD,GACTE,YAAaF,GACbG,QAASH,GACTI,aAAcJ,GACdK,QAASL,GACTM,cAAeN,GACfO,cAAeP,GACfQ,UAAWR,GACXS,UAAWT,GACXU,UAAWV,GACXrgB,YAAaqgB,GACbW,cAAeX,GACfY,eAAgBZ,GAEhBa,WAAYjB,GACZkB,WAAYlB,GAEZ7E,MAmCJ,SAA2BxO,EAAID,GAC3B,IAAKC,EACD,OAAOD,EACX,IAAKA,EACD,OAAOC,EACX,MAAMwU,EAAS,GAAO/gD,OAAOk0B,OAAO,MAAOqY,GAC3C,IAAK,MAAMjqC,KAAOgqC,EACdyU,EAAOz+C,GAAO09C,GAAazT,EAAGjqC,GAAMgqC,EAAKhqC,IAE7C,OAAOy+C,CACX,EA3CIC,QAASrB,GACTsB,OAaJ,SAAqB1U,EAAID,GACrB,OAAOsT,GAAmBsB,GAAgB3U,GAAK2U,GAAgB5U,GACnE,GAbA,SAASqT,GAAYpT,EAAID,GACrB,OAAKA,EAGAC,EAGE,WACH,OAAO,GAAS,GAAWA,GAAMA,EAAGvxC,KAAKf,KAAMA,MAAQsyC,EAAI,GAAWD,GAAQA,EAAKtxC,KAAKf,KAAMA,MAAQqyC,EAC1G,EAJWA,EAHAC,CAQf,CAIA,SAAS2U,GAAgBpK,GACrB,GAAI,GAAQA,GAAM,CACd,MAAMjI,EAAM,CAAC,EACb,IAAK,IAAIj0C,EAAI,EAAGA,EAAIk8C,EAAIt9C,OAAQoB,IAC5Bi0C,EAAIiI,EAAIl8C,IAAMk8C,EAAIl8C,GAEtB,OAAOi0C,CACX,CACA,OAAOiI,CACX,CACA,SAASkJ,GAAazT,EAAID,GACtB,OAAOC,EAAK,IAAI,IAAI91B,IAAI,GAAGhF,OAAO86B,EAAID,KAAUA,CACpD,CACA,SAASsT,GAAmBrT,EAAID,GAC5B,OAAOC,EAAK,GAAO,GAAOvsC,OAAOk0B,OAAO,MAAOqY,GAAKD,GAAQA,CAChE,CAiwCA,MAAM0P,GAp2GN,SAAiC9wB,EAAI+wB,GA1wCrC,IAA0BjB,EA2wClBiB,GAAYA,EAASkF,cACjB,GAAQj2B,GACR+wB,EAAS9L,QAAQhzC,QAAQ+tB,GAGzB+wB,EAAS9L,QAAQhzC,KAAK+tB,IA/wCzB,GADiB8vB,EAoxCD9vB,GAzwCjBsuB,GAAoBr8C,QAAQ69C,GATvBvB,IACAA,GAAmBjpC,SAASwqC,EAAIA,EAAGpI,aAAe8G,GAAiB,EAAIA,KACxEF,GAAoBr8C,KAAK69C,GASjCZ,KAywCJ,EA22JMgH,GAAW1gD,YAA8D+F,GACzE46C,GAAO3gD,YAA0D+F,GACjE66C,GAAU5gD,YAA6D+F,GAC9D/F,YAA4D+F,GAoF3E,SAAS86C,GAAQ7iD,GACb,QAAOA,IAA8B,IAAtBA,EAAM8iD,WACzB,CAoBA,MAKMC,GAAoB,cACpBp/C,GAAe,EAAGC,SAAiB,MAAPA,EAAcA,EAAM,KAChDo/C,GAAe,EAAGxK,MAAKyK,UAASC,aACnB,MAAP1K,EACF,GAASA,IAAQ,GAAMA,IAAQ,GAAWA,GACtC,CAAEt8C,EAAGigD,GAA0BvgD,EAAG48C,EAAK1vC,EAAGm6C,EAAShoD,IAAKioD,GACxD1K,EACJ,KAkEV,MAAM2K,GACN,SAAsB9/C,EAAMod,EAAQ,KAAMya,EAAW,KAAMkoB,EAAY,EAAGC,EAAe,KAAMC,GAAc,GAOzG,GANKjgD,GAAQA,IAASq7C,KAIlBr7C,EAAOu/C,IAEPC,GAAQx/C,GAAO,CAIf,MAAMkgD,EAASC,GAAWngD,EAAMod,GAAO,GAavC,OAZIya,GACAuoB,GAAkBF,EAAQroB,GAU9BqoB,EAAOH,YAAc,EACdG,CACX,CAMA,GA6pBsBvjD,EAjqBDqD,EAkqBd,GAAWrD,IAAU,cAAeA,IAjqBvCqD,EAAOA,EAAKqgD,WAGZjjC,EAAO,CAEPA,EAmCR,SAA4BA,GACxB,OAAKA,EAEE03B,GAAQ13B,IAAUsiC,MAAqBtiC,EACxC,GAAO,CAAC,EAAGA,GACXA,EAHK,IAIf,CAzCgBkjC,CAAmBljC,GAC3B,IAAMmjC,MAAOC,EAAK,MAAEC,GAAUrjC,EAC1BojC,IAAU,GAASA,KACnBpjC,EAAMmjC,MAAQlT,GAAemT,IAE7B,GAASC,KAGL3L,GAAQ2L,KAAW,GAAQA,KAC3BA,EAAQ,GAAO,CAAC,EAAGA,IAEvBrjC,EAAMqjC,MAAQ5T,GAAe4T,GAErC,CA8oBJ,IAA0B9jD,EA1nBtB,OAnIJ,SAAyBqD,EAAMod,EAAQ,KAAMya,EAAW,KAAMkoB,EAAY,EAAGC,EAAe,KAAMzE,GAAYv7C,IAASq/C,GAAW,EAAI,GAA4BY,GAAc,EAAOS,GAAgC,GACnN,MAAM/J,EAAQ,CACV8I,aAAa,EACbkB,UAAU,EACV3gD,OACAod,QACA7c,IAAK6c,GAAS9c,GAAa8c,GAC3B+3B,IAAK/3B,GAASuiC,GAAaviC,GAC3BwjC,QA1wLa,KA2wLbC,aAAc,KACdhpB,WACAipB,UAAW,KACX5G,SAAU,KACV6G,UAAW,KACXC,WAAY,KACZC,KAAM,KACNC,WAAY,KACZ/G,GAAI,KACJgH,OAAQ,KACRr+C,OAAQ,KACRs+C,aAAc,KACdC,YAAa,EACb9F,YACAwE,YACAC,eACAsB,gBAAiB,KACjBpK,WAAY,MAoChB,OAlCIwJ,GACAN,GAAkBzJ,EAAO9e,GAET,IAAZ0jB,GACAv7C,EAAKxJ,UAAUmgD,IAGd9e,IAGL8e,EAAM4E,WAAa,GAAS1jB,GACtB,EACA,IAsBH8e,CACX,CAoEW4K,CAAgBvhD,EAAMod,EAAOya,EAAUkoB,EAAWC,EAlBvC,GAAShgD,GACrB,EAz/KS,CAACA,GAASA,EAAKwhD,aA0/KxBC,CAAWzhD,GACP,IA9bK,CAACA,GAASA,EAAK0hD,aA+bpBC,CAAW3hD,GACP,GACA,GAASA,GACL,EACA,GAAWA,GACP,EACA,EAQ4DigD,GAAa,EACnG,EAQA,SAASE,GAAWxJ,EAAOiL,EAAYC,GAAW,GAG9C,MAAM,MAAEzkC,EAAK,IAAE+3B,EAAG,UAAE4K,EAAS,SAAEloB,GAAa8e,EACtCmL,EAAcF,EAiLxB,YAAuBl1C,GACnB,MAAMi6B,EAAM,CAAC,EACb,IAAK,IAAI9tC,EAAI,EAAGA,EAAI6T,EAAKjV,OAAQoB,IAAK,CAClC,MAAMkpD,EAAUr1C,EAAK7T,GACrB,IAAK,MAAM0H,KAAOwhD,EACd,GAAY,UAARxhD,EACIomC,EAAI4Z,QAAUwB,EAAQxB,QACtB5Z,EAAI4Z,MAAQlT,GAAe,CAAC1G,EAAI4Z,MAAOwB,EAAQxB,cAGlD,GAAY,UAARhgD,EACLomC,EAAI8Z,MAAQ5T,GAAe,CAAClG,EAAI8Z,MAAOsB,EAAQtB,aAE9C,GAAI,GAAKlgD,GAAM,CAChB,MAAMyhD,EAAWrb,EAAIpmC,GACf0hD,EAAWF,EAAQxhD,IACrB0hD,GACAD,IAAaC,GACX,GAAQD,IAAaA,EAASvzC,SAASwzC,KACzCtb,EAAIpmC,GAAOyhD,EACL,GAAGtyC,OAAOsyC,EAAUC,GACpBA,EAEd,KACiB,KAAR1hD,IACLomC,EAAIpmC,GAAOwhD,EAAQxhD,GAG/B,CACA,OAAOomC,CACX,CA/MqCub,CAAW9kC,GAAS,CAAC,EAAGwkC,GAAcxkC,EAmDvE,MAlDe,CACXqiC,aAAa,EACbkB,UAAU,EACV3gD,KAAM22C,EAAM32C,KACZod,MAAO0kC,EACPvhD,IAAKuhD,GAAexhD,GAAawhD,GACjC3M,IAAKyM,GAAcA,EAAWzM,IAItB0M,GAAY1M,EACN,GAAQA,GACJA,EAAIzlC,OAAOiwC,GAAaiC,IACxB,CAACzM,EAAKwK,GAAaiC,IACvBjC,GAAaiC,GACrBzM,EACNyL,QAASjK,EAAMiK,QACfC,aAAclK,EAAMkK,aACpBhpB,SAEMA,EACN/0B,OAAQ6zC,EAAM7zC,OACds+C,aAAczK,EAAMyK,aACpBC,YAAa1K,EAAM0K,YACnB9F,UAAW5E,EAAM4E,UAKjBwE,UAAW6B,GAAcjL,EAAM32C,OAASq/C,IACnB,IAAfU,EACI,GACY,GAAZA,EACJA,EACNC,aAAcrJ,EAAMqJ,aACpBsB,gBAAiB3K,EAAM2K,gBACvBpK,WAAYP,EAAMO,WAClB+J,KAAMtK,EAAMsK,KACZC,WAAYvK,EAAMuK,WAKlBJ,UAAWnK,EAAMmK,UACjB5G,SAAUvD,EAAMuD,SAChB6G,UAAWpK,EAAMoK,WAAaZ,GAAWxJ,EAAMoK,WAC/CC,WAAYrK,EAAMqK,YAAcb,GAAWxJ,EAAMqK,YACjD7G,GAAIxD,EAAMwD,GACVgH,OAAQxK,EAAMwK,OAGtB,CAeA,SAASgB,GAAgBlpB,EAAO,IAAKpP,EAAO,GACxC,OAAOi2B,GAAYR,GAAM,KAAMrmB,EAAMpP,EACzC,CAkDA,SAASu2B,GAAkBzJ,EAAO9e,GAC9B,IAAI73B,EAAO,EACX,MAAM,UAAEu7C,GAAc5E,EACtB,GAAgB,MAAZ9e,EACAA,EAAW,UAEV,GAAI,GAAQA,GACb73B,EAAO,QAEN,GAAwB,iBAAb63B,EAAuB,CACnC,GAAgB,GAAZ0jB,EAAyE,CAEzE,MAAM6G,EAAOvqB,EAASqQ,QAOtB,YANIka,IAEAA,EAAKC,KAAOD,EAAKE,IAAK,GACtBlC,GAAkBzJ,EAAOyL,KACzBA,EAAKC,KAAOD,EAAKE,IAAK,IAG9B,CACK,CACDtiD,EAAO,GACP,MAAMuiD,EAAW1qB,EAAS+V,GACrB2U,KAAc7C,MAAqB7nB,KACpCA,EAAS2qB,KAAO1J,GAaxB,CACJ,MACS,GAAWjhB,IAChBA,EAAW,CAAEqQ,QAASrQ,EAAU2qB,KAAM1J,IACtC94C,EAAO,KAGP63B,EAAWn3B,OAAOm3B,GAEF,GAAZ0jB,GACAv7C,EAAO,GACP63B,EAAW,CAACsqB,GAAgBtqB,KAG5B73B,EAAO,GAGf22C,EAAM9e,SAAWA,EACjB8e,EAAM4E,WAAav7C,CACvB,CAznFkB/B,OAAOk0B,OAAO,MACV,IAAI7c,QACN,IAAIA,QACJ,IAAIA,QAovFxB,IAAIikC,GAAkB,KACtB,MAAMkJ,GAAqB,IAAMlJ,IAAmBT,GAC9C2B,GAAsBnqC,IACxBipC,GAAkBjpC,EAClBA,EAASi/B,MAAMd,IAAI,EAEjBiM,GAAuB,KACzBnB,IAAmBA,GAAgBhK,MAAMb,MACzC6K,GAAkB,IAAI,EAY1B,IAAIS,IAAwB,EA+S5B,MAAM,GAAW,CAAE0I,EAAiBC,IDxpMpC,SAAkBD,EAAiBC,EAAcxM,GAAQ,GACrD,IAAI3e,EACAorB,EACJ,MAAMC,EAAa,GAAWH,GAkB9B,OAjBIG,GACArrB,EAASkrB,EACTE,EAIM,KAGNprB,EAASkrB,EAAgB77C,IACzB+7C,EAASF,EAAgB/uC,KAEhB,IAAIsiC,GAAgBze,EAAQorB,EAAQC,IAAeD,EAAQzM,EAM5E,CCooMWxF,CAAW+R,EAAiBC,EAAc3I,IA4JrD,SAASzqB,GAAEvvB,EAAM8iD,EAAiBjrB,GAC9B,MAAM7+B,EAAImE,UAAU1F,OACpB,OAAU,IAANuB,EACI,GAAS8pD,KAAqB,GAAQA,GAElCtD,GAAQsD,GACDhD,GAAY9/C,EAAM,KAAM,CAAC8iD,IAG7BhD,GAAY9/C,EAAM8iD,GAIlBhD,GAAY9/C,EAAM,KAAM8iD,IAI/B9pD,EAAI,EACJ6+B,EAAWz5B,MAAMT,UAAU4H,MAAMtM,KAAKkE,UAAW,GAEtC,IAANnE,GAAWwmD,GAAQ3nB,KACxBA,EAAW,CAACA,IAETioB,GAAY9/C,EAAM8iD,EAAiBjrB,GAElD,CAEsBl5B,OAAgE,IC16OtF,IAAIokD,GJoYkB,EInYtB,MAAMC,GAAQ,MAAQD,GAGMC,KACCA,KACSA,KACFA,KACEA,KACVA,KAe5B,IAAI,GNzCkB,GM0CtB,MAAM,GAAM,MAAQ,GACdC,GAAiB,CAEnBC,uBAAwB,GAExBlc,iBAAkB,KAElBmc,uBAAwB,KACxBC,cAAe,KACfC,6BAA8B,KAE9BC,eAAgB,KAChBC,cAAe,KAEfC,iCAAkC,KAClCC,2BAA4B,KAE5BC,iBAAkB,KAElBC,+BAAgC,KAEhCC,0BAA2B,KAE3BC,6CAA8C,KAE9CC,oCAAqC,KAErC3c,iBAAkB,MAEtB,SAAS4c,GAAgBhrD,KAAS2T,GAC9B,OAAO42B,GAAmBvqC,EAAM,UAAoF2L,EACxH,CACA,MAiBMs/C,GACS,EAAW,oBACpBC,GAAqC,EAAW,mBAChDC,GAAmC,EAAW,iBAG9CC,GAAuB,EAAW,oBACxC,EAAW,iBACX,MAAMC,GAAkC,EAAW,sBAOnD,SAASC,GAAernD,GAEpB,IAAK,EAASA,GACV,OAAOA,EAEX,IAAK,MAAMuD,KAAOvD,EAEd,GAAK,EAAOA,EAAKuD,GAIjB,GAAKA,EAAIkO,SAAS,KAOb,CAED,MAAM61C,EAAU/jD,EAAImnB,MAAM,KACpBlwB,EAAY8sD,EAAQ7sD,OAAS,EACnC,IAAI8sD,EAAavnD,EACjB,IAAK,IAAInE,EAAI,EAAGA,EAAIrB,EAAWqB,IACrByrD,EAAQzrD,KAAM0rD,IAChBA,EAAWD,EAAQzrD,IAAM,CAAC,GAE9B0rD,EAAaA,EAAWD,EAAQzrD,IAGpC0rD,EAAWD,EAAQ9sD,IAAcwF,EAAIuD,UAC9BvD,EAAIuD,GAEP,EAASgkD,EAAWD,EAAQ9sD,MAC5B6sD,GAAeE,EAAWD,EAAQ9sD,IAE1C,MAvBQ,EAASwF,EAAIuD,KACb8jD,GAAernD,EAAIuD,IAwB/B,OAAOvD,CACX,CACA,SAASwnD,GAAkB7e,EAAQzgC,GAC/B,MAAM,SAAEs+B,EAAQ,OAAEihB,EAAM,gBAAE1b,EAAe,SAAE2b,GAAax/C,EAElDyhC,EAAM1D,EAAcO,GACpBA,EACA,EAAQihB,GACJ,CAAC,EACD,CAAE,CAAC9e,GAAS,CAAC,GAoBvB,GAlBI,EAAQ8e,IACRA,EAAO5hC,SAAQ8hC,IACX,GAAI,WAAYA,GAAU,aAAcA,EAAQ,CAC5C,MAAM,OAAEhf,EAAM,SAAEif,GAAaD,EACzBhf,GACAgB,EAAIhB,GAAUgB,EAAIhB,IAAW,CAAC,EAC9Bkf,GAASD,EAAUje,EAAIhB,KAGvBkf,GAASD,EAAUje,EAE3B,MAEI,EAASge,IAAWE,GAASr5C,KAAKG,MAAMg5C,GAAShe,EACrD,IAIe,MAAnBoC,GAA2B2b,EAC3B,IAAK,MAAMnkD,KAAOomC,EACV,EAAOA,EAAKpmC,IACZ8jD,GAAe1d,EAAIpmC,IAI/B,OAAOomC,CACX,CACA,MAAMme,GAAwBnvB,IAAS,EAASA,IAAQ,EAAQA,GAEhE,SAASkvB,GAASE,EAAKC,GAEnB,GAAIF,GAAqBC,IAAQD,GAAqBE,GAClD,MAAMjB,GAAgBd,GAAeM,eAEzC,IAAK,MAAMhjD,KAAOwkD,EACV,EAAOA,EAAKxkD,KACRukD,GAAqBC,EAAIxkD,KAASukD,GAAqBE,EAAIzkD,IAI3DykD,EAAIzkD,GAAOwkD,EAAIxkD,GAIfskD,GAASE,EAAIxkD,GAAMykD,EAAIzkD,IAIvC,CAEA,SAAS0kD,GAAoB30C,GACzB,OAAOA,EAAStQ,IACpB,CACA,SAASklD,GAAoBltD,EAAQkN,EAASigD,GAE1C,IAAI3hB,EAAW,EAASt+B,EAAQs+B,UAAYt+B,EAAQs+B,SAAW,CAAC,EAC5D,iBAAkB2hB,IAClB3hB,EAAWghB,GAAkBxsD,EAAO2tC,OAAOhpC,MAAO,CAC9C6mC,WACAihB,OAAQU,EAAiBC,gBAIjC,MAAM9a,EAAUrsC,OAAOuK,KAAKg7B,GAQxB,GAPA8G,EAAQ7yC,QACR6yC,EAAQznB,SAAQ8iB,IACZ3tC,EAAOqtD,mBAAmB1f,EAAQnC,EAASmC,GAAQ,IAKnD,EAASzgC,EAAQmmC,iBAAkB,CACnC,MAAMf,EAAUrsC,OAAOuK,KAAKtD,EAAQmmC,iBAChCf,EAAQ7yC,QACR6yC,EAAQznB,SAAQ8iB,IACZ3tC,EAAOstD,oBAAoB3f,EAAQzgC,EAAQmmC,gBAAgB1F,GAAQ,GAG/E,CAEA,GAAI,EAASzgC,EAAQonC,eAAgB,CACjC,MAAMhC,EAAUrsC,OAAOuK,KAAKtD,EAAQonC,eAChChC,EAAQ7yC,QACR6yC,EAAQznB,SAAQ8iB,IACZ3tC,EAAOutD,kBAAkB5f,EAAQzgC,EAAQonC,cAAc3G,GAAQ,GAG3E,CAER,CACA,SAAS9rC,GAAe0G,GACpB,OAAOu/C,GAAYR,GAAM,KAAM/+C,EAAK,EAExC,CAKA,MAAMilD,GAAgB,mBACtB,IAAIC,GAAa,EACjB,SAASC,GAAyBjf,GAC9B,MAAO,CAAElwC,EAAKovC,EAAQplC,EAAKP,IAChBymC,EAAQd,EAAQplC,EAAKkiD,WAAwB/9C,EAAW1E,EAEvE,CAeA,SAAS2lD,GAAezgD,EAAU,CAAC,EAAG0gD,GAClC,MAAM,OAAEC,GAAW3gD,EACb4gD,OAAuBphD,IAAXmhD,EAClB,IAAIE,GAAiB,EAAU7gD,EAAQ8gD,gBACjC9gD,EAAQ8gD,cAEd,MAAMC,EAAU,GAEhBJ,GAAUE,EACJF,EAAOlgB,OAAOhpC,MACd,EAASuI,EAAQygC,QACbzgC,EAAQygC,OACRR,IACJ+gB,EAAkB,GAExBL,GAAUE,EACJF,EAAOje,eAAejrC,MACtB,EAASuI,EAAQ0iC,iBACf,EAAQ1iC,EAAQ0iC,iBAChB3E,EAAc/9B,EAAQ0iC,kBACK,IAA3B1iC,EAAQ0iC,eACN1iC,EAAQ0iC,eACRqe,EAAQtpD,OACZwpD,EAAY,GAAI3B,GAAkByB,EAAQtpD,MAAOuI,IAEjDkhD,EAAmB,GAAInjB,EAAc/9B,EAAQmmC,iBACzCnmC,EAAQmmC,gBACR,CAAE,CAAC4a,EAAQtpD,OAAQ,CAAC,IAGxB0pD,EAAiB,GAAIpjB,EAAc/9B,EAAQonC,eACvCpnC,EAAQonC,cACR,CAAE,CAAC2Z,EAAQtpD,OAAQ,CAAC,IAI9B,IAAI2pD,EAAeT,EACbA,EAAOrf,aACP,EAAUthC,EAAQshC,eAAgB1D,EAAS59B,EAAQshC,cAC/CthC,EAAQshC,YAGd+f,EAAgBV,EACdA,EAAO9d,cACP,EAAU7iC,EAAQ6iC,gBAAiBjF,EAAS59B,EAAQ6iC,eAChD7iC,EAAQ6iC,aAGdye,EAAgBX,EACdA,EAAOY,cACP,EAAUvhD,EAAQuhD,eACdvhD,EAAQuhD,aAGdC,IAAoBxhD,EAAQsiC,eAE5Bmf,EAAW,EAAWzhD,EAAQuhC,SAAWvhC,EAAQuhC,QAAU,KAC3DmgB,EAAkB,EAAW1hD,EAAQuhC,SACnCif,GAAyBxgD,EAAQuhC,SACjC,KAEFogB,EAAmB,EAAW3hD,EAAQuiC,iBACpCviC,EAAQuiC,gBACR,KAEFqf,EAAmBjB,EACjBA,EAAOlb,iBACP,EAAUzlC,EAAQylC,kBACdzlC,EAAQylC,gBAEdoc,IAAqB7hD,EAAQ4iC,gBAGjC,MAAMkf,EAAanB,EACbA,EAAOhd,UACP5F,EAAc/9B,EAAQ2jC,WAClB3jC,EAAQ2jC,UACR,CAAC,EAEX,IAGIoe,EAHAC,EAAehiD,EAAQ4jC,aAAgB+c,GAAUA,EAAO/c,YA2C5Dme,EAvCuB,MACnBnB,GAAazf,GAAmB,MAChC,MAAMuC,EAAa,CACf3mC,QAhXI,QAiXJ0jC,OAAQsgB,EAAQtpD,MAChBirC,eAAgBse,EAAgBvpD,MAChC6mC,SAAU2iB,EAAUxpD,MACpBksC,UAAWme,EACXle,YAAaoe,EACbzgB,QAA6B,OAApBmgB,OAA2BliD,EAAYkiD,EAChDpgB,YAAa8f,EACbve,aAAcwe,EACd/e,eAAgBkf,EAChBhf,aAAa,EACbD,gBAAsC,OAArBof,OAA4BniD,EAAYmiD,EACzDlc,gBAAiBmc,EACjBhf,gBAAiBif,EACjBhe,gBAAiB7jC,EAAQ6jC,gBACzBsB,OAAQ,CAAE8c,UAAW,QAGrBve,EAAWyC,gBAAkB+a,EAAiBzpD,MAC9CisC,EAAW0D,cAAgB+Z,EAAe1pD,MAC1CisC,EAAW0C,qBAAuBrI,EAAcgkB,GAC1CA,EAAS3b,0BACT5mC,EACNkkC,EAAW2D,mBAAqBtJ,EAAcgkB,GACxCA,EAAS1a,wBACT7nC,EAOV,MAAMnO,EJ6Nd,SAA2B2O,EAAU,CAAC,GAElC,MAAMjD,EAAU,EAASiD,EAAQjD,SAAWiD,EAAQjD,QA1ExC,QA2EN0jC,EAAS,EAASzgC,EAAQygC,QAAUzgC,EAAQygC,OAASR,GACrDyC,EAAiB,EAAQ1iC,EAAQ0iC,iBACnC3E,EAAc/9B,EAAQ0iC,iBACtB,EAAS1iC,EAAQ0iC,kBACU,IAA3B1iC,EAAQ0iC,eACN1iC,EAAQ0iC,eACRjC,EACAnC,EAAWP,EAAc/9B,EAAQs+B,UACjCt+B,EAAQs+B,SACR,CAAE,CAACmC,GAAS,CAAC,GACb0F,EAAkBpI,EAAc/9B,EAAQmmC,iBACpCnmC,EAAQmmC,gBACR,CAAE,CAAC1F,GAAS,CAAC,GAEjB2G,EAAgBrJ,EAAc/9B,EAAQonC,eAClCpnC,EAAQonC,cACR,CAAE,CAAC3G,GAAS,CAAC,GAEjBkD,EAAY,EAAO,CAAC,EAAG3jC,EAAQ2jC,WAAa,CAAC,EAvF5C,CACHue,MAAO,CAACzxB,EAAK31B,IAEO,SAATA,GAAmB,EAAS21B,GAC7BA,EAAIkY,cACK,UAAT7tC,GAAoB,EAAS21B,IAAQ,gBAAiBA,EAClDA,EAAIkC,SAASgW,cACblY,EAEd0xB,MAAO,CAAC1xB,EAAK31B,IAEO,SAATA,GAAmB,EAAS21B,GAC7BA,EAAIvK,cACK,UAATprB,GAAoB,EAAS21B,IAAQ,gBAAiBA,EAClDA,EAAIkC,SAASzM,cACbuK,EAEd2xB,WAAY,CAAC3xB,EAAK31B,IAEG,SAATA,GAAmB,EAAS21B,GAC9B,GAAWA,GACF,UAAT31B,GAAoB,EAAS21B,IAAQ,gBAAiBA,EAClD,GAAWA,EAAIkC,UACflC,IAiEZmT,EAAc5jC,EAAQ4jC,aAAe,CAAC,EACtCrC,EAAU,EAAWvhC,EAAQuhC,SAAWvhC,EAAQuhC,QAAU,KAC1DD,GAAc,EAAUthC,EAAQshC,eAAgB1D,EAAS59B,EAAQshC,cACjEthC,EAAQshC,YAERuB,GAAe,EAAU7iC,EAAQ6iC,gBAAiBjF,EAAS59B,EAAQ6iC,eACnE7iC,EAAQ6iC,aAERP,IAAmBtiC,EAAQsiC,eAC3BE,IAAgBxiC,EAAQwiC,YACxBD,EAAkB,EAAWviC,EAAQuiC,iBACrCviC,EAAQuiC,gBACR,KACAyB,EAAYjG,EAAc/9B,EAAQgkC,WAAahkC,EAAQgkC,UAAY,KACnEyB,GAAkB,EAAUzlC,EAAQylC,kBACpCzlC,EAAQylC,gBAER7C,IAAoB5iC,EAAQ4iC,gBAC5BH,EAAkB,EAAWziC,EAAQyiC,iBACrCziC,EAAQyiC,qBAhFd4f,EAkFMxe,EAAkB,EAAW7jC,EAAQ6jC,iBACrC7jC,EAAQ6jC,gBACR/C,IAAajC,GACb8C,EAAmB,EAAW3hC,EAAQ2hC,kBACtC3hC,EAAQ2hC,iBACRZ,IAAelB,GACfkE,EAAkB,EAAS/jC,EAAQ+jC,iBACnC/jC,EAAQ+jC,qBACRvkC,EACAgiC,EAAS,EAAWxhC,EAAQwhC,QAAUxhC,EAAQwhC,OAAS,EAEvD8gB,EAAkBtiD,EAClBomC,EAAuB,EAASkc,EAAgBlc,sBAC5Ckc,EAAgBlc,qBAChB,IAAIn3B,IAERo4B,EAAqB,EAASib,EAAgBjb,oBAC1Cib,EAAgBjb,mBAChB,IAAIp4B,IAERk2B,EAAS,EAASmd,EAAgBnd,QAAUmd,EAAgBnd,OAAS,CAAC,EAC5E/D,KACA,MAAMlU,EAAU,CACZnwB,UACAwlD,IAAKnhB,GACLX,SACAiC,iBACApE,WACAqF,YACAC,cACArC,UACAD,cACAuB,eACAP,iBACAE,cACAD,kBACAyB,YACAyB,kBACA7C,kBACAH,kBACAoB,kBACAlC,mBACAoC,kBACAvC,SACA2D,UAmBJ,OAhBIjY,EAAQiZ,gBAAkBA,EAC1BjZ,EAAQka,cAAgBA,EACxBla,EAAQkZ,qBAAuBA,EAC/BlZ,EAAQma,mBAAqBA,EAUcpC,2BA7UnD,SAA0B3R,EAAMv2B,EAASo8B,GAErCoG,IACIA,GAASK,KDvZH,YCuZuC,CACzCsF,UAAWnmB,KAAKC,MAChBsU,OACAv2B,UACAo8B,QAEZ,CAqUQqpB,CAAiBt1B,EAASnwB,EAASooC,GAEhCjY,CACX,CIxUoBu1B,CAAkB/e,GAE9B,OADAkd,GAAazf,GAAmB9vC,GACzBA,CAAG,EAEHqxD,GACXhhB,GAAqBqgB,EAAUhB,EAAQtpD,MAAOupD,EAAgBvpD,OAa9D,MAAMgpC,EAAS,GAAS,CACpB9+B,IAAK,IAAMo/C,EAAQtpD,MACnBgX,IAAKgiB,IACDswB,EAAQtpD,MAAQg5B,EAChBsxB,EAASthB,OAASsgB,EAAQtpD,KAAK,IAIjCirC,EAAiB,GAAS,CAC5B/gC,IAAK,IAAMq/C,EAAgBvpD,MAC3BgX,IAAKgiB,IACDuwB,EAAgBvpD,MAAQg5B,EACxBsxB,EAASrf,eAAiBse,EAAgBvpD,MAC1CiqC,GAAqBqgB,EAAUhB,EAAQtpD,MAAOg5B,EAAI,IAIpD6N,EAAW,IAAS,IAAM2iB,EAAUxpD,QAEpC0uC,EAAiC,IAAS,IAAM+a,EAAiBzpD,QAEjE2vC,EAA+B,IAAS,IAAM+Z,EAAe1pD,QA0B7DkrD,EAAe,CAAC1+B,EAAI2+B,EAAgBC,EAAUC,EAAiBC,EAAcC,KAG/E,IAAIvhB,EACJ,GA5DQsf,EAAQtpD,MACRupD,EAAgBvpD,MAChBwpD,EAAUxpD,MACVypD,EAAiBzpD,MACjB0pD,EAAe1pD,MAwDwBwtC,0BAC3C,IACIhE,GA1MK,MACjB,MAAM71B,EAAWmyC,KACjB,IAAIpkB,EAAO,KACX,OAAO/tB,IAAa+tB,EAAO4mB,GAAoB30C,GAAUk1C,KACnD,CAAE,CAACA,IAAgBnnB,GACnB,IAAI,EAqMoB8pB,IACbrC,IACDmB,EAAShe,gBAAkB4c,EJiJdzf,QI/IP1hC,GAEViiC,EAAMxd,EAAG89B,EAOb,CALA,QACI9gB,GAAkB,MACb2f,IACDmB,EAAShe,qBAAkBvkC,EAEnC,MAGAiiC,EAAMxd,EAAG89B,GAEb,GAAIpkB,EAAS8D,KJ6DA,II7DQA,EAAsB,CACvC,MAAOpmC,EAAKypC,GAAQ8d,IA0BpB,OAAOjC,GAAUW,EACXwB,EAAgBnC,GAChBoC,EAAa1nD,EACvB,CACK,GAAI2nD,EAAiBvhB,GACtB,OAAOA,EAIP,MAAMod,GAAgBd,GAAeC,uBACzC,EAGJ,SAAS7qD,KAAKqU,GACV,OAAOm7C,GAAaz1B,GAAW0f,QAAQ50C,MAAMqqC,GAAW,KAAM,CAACnV,KAAY1lB,MAAQ,IAAMm7B,MAAsBn7B,IAAO,GAAaoX,GAAQguB,QAAQ50C,MAAM4mB,EAAKzrB,EAAGyrB,EAAM,IAAIpX,MAAQnM,GAAOA,IAAKo1B,GAAO,EAASA,IACnN,CAuBA,MACMuT,EAAY,CACd1yC,UAPJ,SAAmB2H,GACf,OAAOA,EAAOqiB,KAAImV,GAAO,EAASA,IAAQkN,EAASlN,IAAQ,EAAUA,GAC/D97B,GAAe6G,OAAOi1B,IACtBA,GACV,EAIIj/B,YAHiBi/B,GAAQA,EAIzB31B,KAAM,SAiEV,SAASooD,EAAiBziB,GACtB,OAAQwgB,EAAUxpD,MAAMgpC,IAAW,CAAC,CACxC,CA6CA8f,KAEII,GAAUljB,IACVqW,GAAM6M,EAAOlgB,QAAShQ,IACdowB,IACAE,EAAQtpD,MAAQg5B,EAChBsxB,EAASthB,OAAShQ,EAClBiR,GAAqBqgB,EAAUhB,EAAQtpD,MAAOupD,EAAgBvpD,OAClE,IAEJq8C,GAAM6M,EAAOje,gBAAiBjS,IACtBowB,IACAG,EAAgBvpD,MAAQg5B,EACxBsxB,EAASrf,eAAiBjS,EAC1BiR,GAAqBqgB,EAAUhB,EAAQtpD,MAAOupD,EAAgBvpD,OAClE,KAIR,MAAM0rD,EAAW,CACbhxB,GAAIouB,GACJ9f,SACAiC,iBACIoe,oBACA,OAAOD,CACX,EACIC,kBAAcrwB,GACdowB,EAAiBpwB,EACbA,GAAOkwB,IACPI,EAAQtpD,MAAQkpD,EAAOlgB,OAAOhpC,MAC9BupD,EAAgBvpD,MAAQkpD,EAAOje,eAAejrC,MAC9CiqC,GAAqBqgB,EAAUhB,EAAQtpD,MAAOupD,EAAgBvpD,OAEtE,EACI2rD,uBACA,OAAOrqD,OAAOuK,KAAK29C,EAAUxpD,OAAOkgB,MACxC,EACA2mB,WACIqF,gBACA,OAAOme,CACX,EACIle,kBACA,OAAOoe,GAAgB,CAAC,CAC5B,EACIqB,eACA,OAAOzC,CACX,EACItf,kBACA,OAAO8f,CACX,EACI9f,gBAAY7Q,GACZ2wB,EAAe3wB,EACfsxB,EAASzgB,YAAc8f,CAC3B,EACIve,mBACA,OAAOwe,CACX,EACIxe,iBAAapS,GACb4wB,EAAgB5wB,EAChBsxB,EAASlf,aAAewe,CAC5B,EACIE,mBACA,OAAOD,CACX,EACIC,iBAAa9wB,GACb6wB,EAAgB7wB,CACpB,EACI6R,qBACA,OAAOkf,CACX,EACIlf,mBAAe7R,GACf+wB,EAAkB/wB,EAClBsxB,EAASzf,eAAiBkf,CAC9B,EACI/b,sBACA,OAAOmc,CACX,EACInc,oBAAgBhV,GAChBmxB,EAAmBnxB,EACnBsxB,EAAStc,gBAAkBhV,CAC/B,EACImS,sBACA,OAAOif,CACX,EACIjf,oBAAgBnS,GAChBoxB,EAAmBpxB,EACnBsxB,EAASnf,gBAAkBnS,CAC/B,EACAt9B,IACA+vD,mBACAI,iBArIJ,SAA0B7iB,EAAQlmB,GAC9B0mC,EAAUxpD,MAAMgpC,GAAUlmB,EAC1BwnC,EAASzjB,SAAW2iB,EAAUxpD,KAClC,EAmII0oD,mBAjIJ,SAA4B1f,EAAQlmB,GAChC0mC,EAAUxpD,MAAMgpC,GAAUwgB,EAAUxpD,MAAMgpC,IAAW,CAAC,EACtDkf,GAASplC,EAAS0mC,EAAUxpD,MAAMgpC,IAClCshB,EAASzjB,SAAW2iB,EAAUxpD,KAClC,EA8HI8rD,0BAjUJ,WACI,OAAO,EAAW5B,GAAoBA,EAAmB,IAC7D,EAgUI6B,0BA9TJ,SAAmClO,GAC/BqM,EAAmBrM,EACnByM,EAASxf,gBAAkB+S,CAC/B,EA4TImO,kBA1TJ,WACI,OAAOhC,CACX,EAyTIiC,kBAvTJ,SAA2BpO,GACP,OAAZA,IACAoM,EAAkBlB,GAAyBlL,IAE/CmM,EAAWnM,EACXyM,EAASxgB,QAAUmgB,CACvB,EAkTI,CAACzC,IAjLL,SAAwB0E,GACpB3B,EAAe2B,EACf5B,EAASne,YAAcoe,CAC3B,GA4MA,OA3BImB,EAAShd,gBAAkBA,EAC3Bgd,EAAS/b,cAAgBA,EACzB+b,EAASS,GA9Ob,YAAep8C,GACX,MAAOq9B,EAAMC,EAAMiB,GAAQv+B,EAC3B,GAAIu+B,IAAS,EAASA,GAClB,MAAM8Y,GAAgBd,GAAejc,kBAEzC,OAAO3uC,EAAM0xC,EAAMC,EAAM,EAAO,CAAEhC,iBAAiB,GAAQiD,GAAQ,CAAC,GACxE,EAyOIod,EAASU,GAlLb,SAAYxoD,EAAKolC,GACb,MACMlmB,EAAU2oC,EADK,EAASziB,GAAUA,EAASsgB,EAAQtpD,OAEzD,OAAkD,OAA3CsqD,EAASle,gBAAgBtpB,EAASlf,EAC7C,EA+KI8nD,EAASW,GAhKb,SAAYzoD,GACR,MAAMijC,EAfV,SAAyBjjC,GACrB,IAAIijC,EAAW,KACf,MAAM8G,EAAUrF,GAAwBgiB,EAAUf,EAAgBvpD,MAAOspD,EAAQtpD,OACjF,IAAK,IAAI9D,EAAI,EAAGA,EAAIyxC,EAAQ7yC,OAAQoB,IAAK,CACrC,MAAMowD,EAAuB9C,EAAUxpD,MAAM2tC,EAAQzxC,KAAO,CAAC,EACvDqwD,EAAejC,EAASle,gBAAgBkgB,EAAsB1oD,GACpE,GAAoB,MAAhB2oD,EAAsB,CACtB1lB,EAAW0lB,EACX,KACJ,CACJ,CACA,OAAO1lB,CACX,CAGqB2lB,CAAgB5oD,GAEjC,OAAmB,MAAZijC,EACDA,EACAqiB,GACIA,EAAOmD,GAAGzoD,IACV,CAAC,CACf,EAyJI8nD,EAAS5wB,EAzOb,YAAc/qB,GACV,OAAOm7C,GAAaz1B,GAAW0f,QAAQ50C,MAAMkuC,GAAU,KAAM,CAAChZ,KAAY1lB,MAAQ,IAAM8+B,MAAqB9+B,IAAO,GAAmBoX,GAAQguB,QAAQ50C,MAAM4mB,EAAK2T,EAAG3T,EAAM,IAAIpX,MAAQ,IJUjK,KIV8LipB,GAAO,EAASA,IACxO,EAwOI0yB,EAAS/vD,EAtOb,YAAcoU,GACV,OAAOm7C,GAAaz1B,GAAW0f,QAAQ50C,MAAMynB,GAAQ,KAAM,CAACyN,KAAY1lB,MAAQ,IAAM8/B,MAAmB9/B,IAAO,GAAiBoX,GAAQguB,QAAQ50C,MAAM4mB,EAAKxrB,EAAGwrB,EAAM,IAAIpX,MAAQ,IJM3J,KINwLipB,GAAO,EAASA,IAClO,EAqOI0yB,EAASe,kBA1Ib,SAA2BzjB,GACvB,OAAOygB,EAAiBzpD,MAAMgpC,IAAW,CAAC,CAC9C,EAyII0iB,EAASgB,kBAvIb,SAA2B1jB,EAAQzY,GAC/Bk5B,EAAiBzpD,MAAMgpC,GAAUzY,EACjC+5B,EAAS5b,gBAAkB+a,EAAiBzpD,MAC5CyvC,GAAoB6a,EAAUthB,EAAQzY,EAC1C,EAoIIm7B,EAAS/C,oBAlIb,SAA6B3f,EAAQzY,GACjCk5B,EAAiBzpD,MAAMgpC,GAAU,EAAOygB,EAAiBzpD,MAAMgpC,IAAW,CAAC,EAAGzY,GAC9E+5B,EAAS5b,gBAAkB+a,EAAiBzpD,MAC5CyvC,GAAoB6a,EAAUthB,EAAQzY,EAC1C,EA+HIm7B,EAASiB,gBA7Hb,SAAyB3jB,GACrB,OAAO0gB,EAAe1pD,MAAMgpC,IAAW,CAAC,CAC5C,EA4HI0iB,EAASkB,gBA1Hb,SAAyB5jB,EAAQzY,GAC7Bm5B,EAAe1pD,MAAMgpC,GAAUzY,EAC/B+5B,EAAS3a,cAAgB+Z,EAAe1pD,MACxCgwC,GAAkBsa,EAAUthB,EAAQzY,EACxC,EAuHIm7B,EAAS9C,kBArHb,SAA2B5f,EAAQzY,GAC/Bm5B,EAAe1pD,MAAMgpC,GAAU,EAAO0gB,EAAe1pD,MAAMgpC,IAAW,CAAC,EAAGzY,GAC1E+5B,EAAS3a,cAAgB+Z,EAAe1pD,MACxCgwC,GAAkBsa,EAAUthB,EAAQzY,EACxC,EAkHIm7B,EAASjE,IAAoBl/C,EAAQskD,mBACrCnB,EAASrE,IA9Nb,YAA2Bt3C,GACvB,OAAOm7C,GAAaz1B,IAChB,IAAIuU,EACJ,MAAMsgB,EAAW70B,EACjB,IACI60B,EAAS/d,UAAYA,EACrBvC,EAAMmL,QAAQ50C,MAAMqqC,GAAW,KAAM,CAAC0f,KAAav6C,GAIvD,CAFA,QACIu6C,EAAS/d,UAAY,IACzB,CACA,OAAOvC,CAAG,IACX,IAAMkB,MAAsBn7B,IAAO,GAEtCoX,GAAQA,EAAKkgC,OAAyBt3C,KAAOnM,GAAO,CAAC1G,GAAe0G,MAAOo1B,GAAO,EAAQA,IAC9F,EAgNI0yB,EAASpE,IAxMb,YAA0Bv3C,GACtB,OAAOm7C,GAAaz1B,GAAW0f,QAAQ50C,MAAMkuC,GAAU,KAAM,CAAChZ,KAAY1lB,MAAQ,IAAM8+B,MAAqB9+B,IAAO,GAEpHoX,GAAQA,EAAKmgC,OAAwBv3C,KAAO,IAAM,KAAIipB,GAAO,EAASA,IAAQ,EAAQA,IAC1F,EAqMI0yB,EAASnE,IA/Mb,YAAwBx3C,GACpB,OAAOm7C,GAAaz1B,GAAW0f,QAAQ50C,MAAMynB,GAAQ,KAAM,CAACyN,KAAY1lB,MAAQ,IAAM8/B,MAAmB9/B,IAAO,GAEhHoX,GAAQA,EAAKogC,OAAsBx3C,KAAO,IAAM,KAAIipB,GAAO,EAASA,IAAQ,EAAQA,IACxF,EAsNO0yB,CACX,CA0FA,SAASoB,GAAcvkD,EAAU,CAAC,EAAG0gD,GACjC,CACI,MAAMyC,EAAW1C,GAnFzB,SAAgCzgD,GAC5B,MAAMygC,EAAS,EAASzgC,EAAQygC,QAAUzgC,EAAQygC,OAASR,GACrDyC,EAAiB,EAAS1iC,EAAQ0iC,iBACpC,EAAQ1iC,EAAQ0iC,iBAChB3E,EAAc/9B,EAAQ0iC,kBACK,IAA3B1iC,EAAQ0iC,eACN1iC,EAAQ0iC,eACRjC,EACAc,EAAU,EAAWvhC,EAAQuhC,SAAWvhC,EAAQuhC,aAAU/hC,EAC1D8hC,GAAc,EAAUthC,EAAQwkD,yBAClC5mB,EAAS59B,EAAQwkD,yBACdxkD,EAAQwkD,sBAET3hB,GAAe,EAAU7iC,EAAQykD,sBACnC7mB,EAAS59B,EAAQykD,sBACdzkD,EAAQykD,mBAETlD,GAAe,EAAUvhD,EAAQuhD,eACjCvhD,EAAQuhD,aAERjf,IAAmBtiC,EAAQ0kD,uBAC3B/gB,EAAY5F,EAAc/9B,EAAQ2jC,WAAa3jC,EAAQ2jC,UAAY,CAAC,EACpEghB,EAAqB3kD,EAAQ2kD,mBAC7BpiB,EAAkB,EAAWviC,EAAQuiC,iBACrCviC,EAAQuiC,qBACR/iC,EACAimC,GAAkB,EAASzlC,EAAQ4kD,oBACL,QAA9B5kD,EAAQ4kD,kBAERhiB,IAAoB5iC,EAAQ6kD,oBAC5B/D,GAAgB,EAAU9gD,EAAQ8kD,OAAQ9kD,EAAQ8kD,KAOxD,IAAIxmB,EAAWt+B,EAAQs+B,SACvB,GAAIP,EAAc/9B,EAAQ+kD,gBAAiB,CACvC,MAAMA,EAAiB/kD,EAAQ+kD,eAE/BzmB,EADgBvlC,OAAOuK,KAAKyhD,GACT7hC,QAAO,CAACob,EAAUmC,KACjC,MAAMlmB,EAAU+jB,EAASmC,KAAYnC,EAASmC,GAAU,CAAC,GAEzD,OADA,EAAOlmB,EAASwqC,EAAetkB,IACxBnC,CAAQ,GACfA,GAAY,CAAC,EACrB,CACA,MAAM,OAAEihB,EAAM,OAAEoB,EAAM,mBAAE2D,GAAuBtkD,EACzCmmC,EAAkBnmC,EAAQmmC,gBAC1BiB,EAAgBpnC,EAAQonC,cAE9B,MAAO,CACH3G,SACAiC,iBACApE,WACAkhB,SALax/C,EAAQw/C,SAMrBrZ,kBACAiB,gBACA7F,UACAD,cACAuB,eACA0e,eACAjf,iBACAqB,YACAC,YAAa+gB,EACbpiB,kBACAkD,kBACA7C,kBACAiB,gBAAiB7jC,EAAQ6jC,gBACzBid,gBACAvB,SACAoB,SACA2D,qBAER,CASwCU,CAAuBhlD,IAEjDilD,EAAU,CAEZ9yB,GAAIgxB,EAAShxB,GAETsO,aACA,OAAO0iB,EAAS1iB,OAAOhpC,KAC3B,EACIgpC,WAAOhQ,GACP0yB,EAAS1iB,OAAOhpC,MAAQg5B,CAC5B,EAEIiS,qBACA,OAAOygB,EAASzgB,eAAejrC,KACnC,EACIirC,mBAAejS,GACf0yB,EAASzgB,eAAejrC,MAAQg5B,CACpC,EAEI6N,eACA,OAAO6kB,EAAS7kB,SAAS7mC,KAC7B,EAEI0uC,sBACA,OAAOgd,EAAShd,gBAAgB1uC,KACpC,EAEI2vC,oBACA,OAAO+b,EAAS/b,cAAc3vC,KAClC,EAEI2rD,uBACA,OAAOD,EAASC,gBACpB,EAEI3c,gBAGA,MAAO,CACHj1C,YAAW,IACA,GAGnB,EACIi1C,cAAUhW,GAEd,EAEI8Q,cACA,OAAO4hB,EAASM,mBACpB,EACIliB,YAAQ+T,GACR6N,EAASO,kBAAkBpO,EAC/B,EAEIkP,4BACA,OAAO,EAAUrB,EAAS7hB,cACnB6hB,EAAS7hB,YACV6hB,EAAS7hB,WACnB,EACIkjB,0BAAsB/zB,GACtB0yB,EAAS7hB,YAAc,EAAU7Q,IAAQA,EAAMA,CACnD,EAEIg0B,yBACA,OAAO,EAAUtB,EAAStgB,eACnBsgB,EAAStgB,aACVsgB,EAAStgB,YACnB,EACI4hB,uBAAmBh0B,GACnB0yB,EAAStgB,aAAe,EAAUpS,IAAQA,EAAMA,CACpD,EAEIkT,gBACA,OAAOwf,EAASxf,SACpB,EAEI+gB,6BACA,OAAOvB,EAAS7gB,cACpB,EACIoiB,2BAAuBj0B,GACvB0yB,EAAS7gB,eAAiB7R,CAC9B,EAEI8R,sBACA,OAAO4gB,EAASI,2BACpB,EACIhhB,oBAAgB+S,GAChB6N,EAASK,0BAA0BlO,EACvC,EAEIwP,WACA,OAAO3B,EAASrC,aACpB,EACIgE,SAAKr0B,GACL0yB,EAASrC,cAAgBrwB,CAC7B,EAEIm0B,wBACA,OAAOzB,EAAS1d,gBAAkB,OAAS,KAC/C,EACImf,sBAAkBn0B,GAClB0yB,EAAS1d,gBAA0B,QAARhV,CAC/B,EAEIo0B,0BACA,OAAO1B,EAASvgB,eACpB,EACIiiB,wBAAoBp0B,GACpB0yB,EAASvgB,gBAAkBnS,CAC/B,EAEIy0B,+BAGA,OAAO,CACX,EACIA,6BAAyBz0B,GAG7B,EAEIk0B,yBACA,OAAOxB,EAASvf,aAAe,CAAC,CACpC,EAEAuhB,WAAYhC,EAEZhwD,KAAKqU,GACD,MAAOq9B,EAAMC,EAAMiB,GAAQv+B,EACrBxH,EAAU,CAAC,EACjB,IAAItO,EAAO,KACPwxC,EAAQ,KACZ,IAAK,EAAS2B,GACV,MAAMga,GAAgBd,GAAejc,kBAEzC,MAAMzmC,EAAMwpC,EAiBZ,OAhBI,EAASC,GACT9kC,EAAQygC,OAASqE,EAEZ,EAAQA,GACbpzC,EAAOozC,EAEF/G,EAAc+G,KACnB5B,EAAQ4B,GAER,EAAQiB,GACRr0C,EAAOq0C,EAEFhI,EAAcgI,KACnB7C,EAAQ6C,GAGL6G,QAAQ50C,MAAMmrD,EAAShwD,EAAGgwD,EAAU,CACvC9nD,EACC3J,GAAQwxC,GAAS,CAAC,EACnBljC,GAER,EACA4jD,GAAE,IAAIp8C,IACKolC,QAAQ50C,MAAMmrD,EAASS,GAAIT,EAAU,IAAI37C,IAGpD49C,MAAM59C,GACF,MAAOq9B,EAAMC,EAAMiB,GAAQv+B,EACrBxH,EAAU,CAAEikC,OAAQ,GAC1B,IAAIvyC,EAAO,KACPwxC,EAAQ,KACZ,IAAK,EAAS2B,GACV,MAAMga,GAAgBd,GAAejc,kBAEzC,MAAMzmC,EAAMwpC,EAuBZ,OAtBI,EAASC,GACT9kC,EAAQygC,OAASqE,EAEZnH,EAASmH,GACd9kC,EAAQikC,OAASa,EAEZ,EAAQA,GACbpzC,EAAOozC,EAEF/G,EAAc+G,KACnB5B,EAAQ4B,GAER,EAASiB,GACT/lC,EAAQygC,OAASsF,EAEZ,EAAQA,GACbr0C,EAAOq0C,EAEFhI,EAAcgI,KACnB7C,EAAQ6C,GAGL6G,QAAQ50C,MAAMmrD,EAAShwD,EAAGgwD,EAAU,CACvC9nD,EACC3J,GAAQwxC,GAAS,CAAC,EACnBljC,GAER,EAEA6jD,GAAE,CAACxoD,EAAKolC,IACG0iB,EAASU,GAAGxoD,EAAKolC,GAG5BqjB,GAAGzoD,GACQ8nD,EAASW,GAAGzoD,GAGvB6nD,iBAAiBziB,GACN0iB,EAASD,iBAAiBziB,GAGrC6iB,iBAAiB7iB,EAAQlmB,GACrB4oC,EAASG,iBAAiB7iB,EAAQlmB,EACtC,EAEA4lC,mBAAmB1f,EAAQlmB,GACvB4oC,EAAShD,mBAAmB1f,EAAQlmB,EACxC,EAEAgY,EAAC,IAAI/qB,IACMolC,QAAQ50C,MAAMmrD,EAAS5wB,EAAG4wB,EAAU,IAAI37C,IAGnD08C,kBAAkBzjB,GACP0iB,EAASe,kBAAkBzjB,GAGtC0jB,kBAAkB1jB,EAAQzY,GACtBm7B,EAASgB,kBAAkB1jB,EAAQzY,EACvC,EAEAo4B,oBAAoB3f,EAAQzY,GACxBm7B,EAAS/C,oBAAoB3f,EAAQzY,EACzC,EAEA50B,EAAC,IAAIoU,IACMolC,QAAQ50C,MAAMmrD,EAAS/vD,EAAG+vD,EAAU,IAAI37C,IAGnD48C,gBAAgB3jB,GACL0iB,EAASiB,gBAAgB3jB,GAGpC4jB,gBAAgB5jB,EAAQzY,GACpBm7B,EAASkB,gBAAgB5jB,EAAQzY,EACrC,EAEAq4B,kBAAkB5f,EAAQzY,GACtBm7B,EAAS9C,kBAAkB5f,EAAQzY,EACvC,EAGAq9B,eAAc,CAAClmB,EAAQC,KAGX,EAGZkmB,6BAA6B1nD,GACzB,MAAM,iCAAE2nD,GAAqCvlD,EACzCulD,GACAA,EAAiC3nD,EAAQqnD,EAEjD,GAaJ,OAAOA,CACX,CACJ,CAGA,MAAMO,GAAkB,CACpBprC,IAAK,CACDtf,KAAM,CAACU,OAAQzC,SAEnB0nC,OAAQ,CACJ3lC,KAAMU,QAEV6uC,MAAO,CACHvvC,KAAMU,OAENiqD,UAAYh1B,GAAwC,WAARA,GAA4B,WAARA,EAChEuS,QAAS,UAEb1P,KAAM,CACFx4B,KAAM/B,SA+Bd,SAAS2sD,GAAmBtrC,GACxB,OAAO+/B,EACX,CAmDA,MAAMwL,GAAqC,CAEvCrrD,KAAM,SACN4d,MAAO,EAAO,CACV0tC,QAAS,CACL9qD,KAAMU,OACNqqD,UAAU,GAEd5hB,OAAQ,CACJnpC,KAAM,CAACoyC,OAAQ1xC,QAEfiqD,UAAYh1B,GAAQkN,EAASlN,KAAS7mB,MAAM6mB,KAEjD+0B,IAGHM,MAAM5tC,EAAOgV,GACT,MAAM,MAAEgqB,EAAK,MAAEF,GAAU9pB,EAEnBoG,EAAOpb,EAAMob,MACfyyB,GAAQ,CACJC,SAAU9tC,EAAMmyB,MAChB4b,gBAAgB,IAExB,MAAO,KACH,MAAM3iD,EAAOvK,OAAOuK,KAAK4zC,GAAO7zB,QAAOhoB,GAAe,MAARA,IACxC2E,EAAU,CAAC,EACbkY,EAAMuoB,SACNzgC,EAAQygC,OAASvoB,EAAMuoB,aAENjhC,IAAjB0Y,EAAM+rB,SACNjkC,EAAQikC,OAAS,EAAS/rB,EAAM+rB,SAAW/rB,EAAM+rB,OAAS/rB,EAAM+rB,QAEpE,MAAMn6B,EAjHlB,UAEA,MAAEotC,GACF5zC,GACI,OAAoB,IAAhBA,EAAK/Q,QAA4B,YAAZ+Q,EAAK,IAEd4zC,EAAMlU,QAAUkU,EAAMlU,UAAY,IAEnC9f,QAAO,CAACg6B,EAAMgJ,IACN,IACRhJ,KACC,EAAQgJ,EAAQvzB,UAAYuzB,EAAQvzB,SAAW,CAACuzB,KAEzD,IAII5iD,EAAK4f,QAAO,CAACpZ,EAAKzO,KACrB,MAAM6hD,EAAOhG,EAAM77C,GAInB,OAHI6hD,IACApzC,EAAIzO,GAAO6hD,KAERpzC,CAAG,GACX,CAAC,EAEZ,CAwFwBq8C,CAAkBj5B,EAAS5pB,GAEjCqvB,EAAWW,EAAKwrB,IAAsB5mC,EAAM0tC,QAAS97C,EAAK9J,GAC1DomD,EAAgB,EAAO,CAAC,EAAGpP,GAIjC,OAAO3sB,GAHK,EAASnS,EAAMkC,MAAQ,EAASlC,EAAMkC,KAC5ClC,EAAMkC,IACNsrC,KACQU,EAAezzB,EAAS,CAE9C,GAMJ,SAAS0zB,GAAgBnuC,EAAOgV,EAASo5B,EAAUC,GAC/C,MAAM,MAAErP,EAAK,MAAEF,GAAU9pB,EACzB,MAAO,KACH,MAAMltB,EAAU,CAAE8pB,MAAM,GACxB,IAAIuc,EAAY,CAAC,EACbnuB,EAAMuoB,SACNzgC,EAAQygC,OAASvoB,EAAMuoB,QAEvB,EAASvoB,EAAM8P,QACfhoB,EAAQ3E,IAAM6c,EAAM8P,OAEf,EAAS9P,EAAM8P,UAEhB,EAAS9P,EAAM8P,OAAO3sB,OAEtB2E,EAAQ3E,IAAM6c,EAAM8P,OAAO3sB,KAG/BgrC,EAAYttC,OAAOuK,KAAK4U,EAAM8P,QAAQ9E,QAAO,CAACljB,EAASmmB,IAC5CmgC,EAAS/8C,SAAS4c,GACnB,EAAO,CAAC,EAAGnmB,EAAS,CAAE,CAACmmB,GAAOjO,EAAM8P,OAAO7B,KAC3CnmB,GACP,CAAC,IAER,MAAM7F,EAAQosD,EAAkBruC,EAAMzgB,MAAOuI,EAASqmC,GACtD,IAAI1T,EAAW,CAAC3yB,EAAQ3E,KACpB,EAAQlB,GACRw4B,EAAWx4B,EAAMmhB,KAAI,CAACwO,EAAMz3B,KACxB,MAAM6qD,EAAOhG,EAAMptB,EAAKhvB,MAClB0rD,EAAOtJ,EACPA,EAAK,CAAE,CAACpzB,EAAKhvB,MAAOgvB,EAAKryB,MAAOpF,QAAO8H,UACvC,CAAC2vB,EAAKryB,OAlC5B,IAAiBmG,EAsCD,OArCL,EADMA,EAmCW4oD,KAlCG,EAAS5oD,EAAO,MAmC3B4oD,EAAK,GAAGnrD,IAAM,GAAGyuB,EAAKhvB,QAAQzI,KAE3Bm0D,CAAI,IAGV,EAASrsD,KACdw4B,EAAW,CAACx4B,IAEhB,MAAMisD,EAAgB,EAAO,CAAC,EAAGpP,GAIjC,OAAO3sB,GAHK,EAASnS,EAAMkC,MAAQ,EAASlC,EAAMkC,KAC5ClC,EAAMkC,IACNsrC,KACQU,EAAezzB,EAAS,CAE9C,CAmBA,MAAMgU,GAAsC,CAExCrsC,KAAM,SACN4d,MAAO,EAAO,CACVzgB,MAAO,CACHqD,KAAMoyC,OACN2Y,UAAU,GAEd79B,OAAQ,CACJltB,KAAM,CAACU,OAAQzC,UAEpBysD,IAGHM,MAAM5tC,EAAOgV,GACT,MAAMoG,EAAOpb,EAAMob,MACfyyB,GAAQ,CAAEC,SAAU,SAAUC,gBAAgB,IAClD,OAAOI,GAAgBnuC,EAAOgV,EAASsa,IAA4B,IAAIhgC,IAEvE8rB,EAAK0rB,OAAsBx3C,IAC/B,GAoBEi/C,GAAuC,CAEzCnsD,KAAM,SACN4d,MAAO,EAAO,CACVzgB,MAAO,CACHqD,KAAM,CAACoyC,OAAQnuB,MACf8mC,UAAU,GAEd79B,OAAQ,CACJltB,KAAM,CAACU,OAAQzC,UAEpBysD,IAGHM,MAAM5tC,EAAOgV,GACT,MAAMoG,EAAOpb,EAAMob,MACfyyB,GAAQ,CAAEC,SAAU,SAAUC,gBAAgB,IAClD,OAAOI,GAAgBnuC,EAAOgV,EAAS0Z,IAA8B,IAAIp/B,IAEzE8rB,EAAKyrB,OAAwBv3C,IACjC,GA0EJ,SAASk/C,GAAWjvD,GAChB,GAAI,EAASA,GACT,MAAO,CAAE6a,KAAM7a,GAEd,GAAIsmC,EAActmC,GAAQ,CAC3B,KAAM,SAAUA,GACZ,MAAMonD,GAAgBd,GAAeK,gBAEzC,OAAO3mD,CACX,CAEI,MAAMonD,GAAgBd,GAAeM,cAE7C,CACA,SAASsI,GAAWlvD,GAChB,MAAM,KAAE6a,EAAI,OAAEmuB,EAAM,KAAEj5B,EAAI,OAAE23B,EAAM,OAAE8E,GAAWxsC,EACzCuI,EAAU,CAAC,EACXkjC,EAAQ17B,GAAQ,CAAC,EAUvB,OATI,EAASi5B,KACTzgC,EAAQygC,OAASA,GAEjB9C,EAASwB,KACTn/B,EAAQikC,OAAS9E,GAEjBxB,EAASsG,KACTjkC,EAAQikC,OAASA,GAEd,CAAC3xB,EAAM4wB,EAAOljC,EACzB,CAmfA,SAAS4mD,GAAYhoC,EAAM5e,GACvB4e,EAAK6hB,OAASzgC,EAAQygC,QAAU7hB,EAAK6hB,OACrC7hB,EAAK8jB,eAAiB1iC,EAAQ0iC,gBAAkB9jB,EAAK8jB,eACrD9jB,EAAK2iB,QAAUvhC,EAAQuhC,SAAW3iB,EAAK2iB,QACvC3iB,EAAK4lC,sBACDxkD,EAAQwkD,uBAAyB5lC,EAAK6lC,mBAC1C7lC,EAAK6lC,mBACDzkD,EAAQykD,oBAAsB7lC,EAAK6lC,mBACvC7lC,EAAK8lC,uBACD1kD,EAAQ0kD,wBAA0B9lC,EAAK8lC,uBAC3C9lC,EAAK2jB,gBAAkBviC,EAAQuiC,iBAAmB3jB,EAAK2jB,gBACvD3jB,EAAKgmC,kBAAoB5kD,EAAQ4kD,mBAAqBhmC,EAAKgmC,kBAC3DhmC,EAAKimC,oBACD7kD,EAAQ6kD,qBAAuBjmC,EAAKimC,oBACxCjmC,EAAKkmC,KAAO9kD,EAAQ8kD,MAAQlmC,EAAKkmC,KACjClmC,EAAKumC,WAAWlG,IAAsBj/C,EAAQ2kD,oBAAsB/lC,EAAK+lC,oBACzE,MAAMrmB,EAAWghB,GAAkB1gC,EAAK6hB,OAAQ,CAC5CnC,SAAUt+B,EAAQs+B,SAClBihB,OAAQv/C,EAAQu/C,SASpB,OAPAxmD,OAAOuK,KAAKg7B,GAAU3gB,SAAQ8iB,GAAU7hB,EAAKuhC,mBAAmB1f,EAAQnC,EAASmC,MAC7EzgC,EAAQmmC,iBACRptC,OAAOuK,KAAKtD,EAAQmmC,iBAAiBxoB,SAAQ8iB,GAAU7hB,EAAKwhC,oBAAoB3f,EAAQzgC,EAAQmmC,gBAAgB1F,MAEhHzgC,EAAQonC,eACRruC,OAAOuK,KAAKtD,EAAQonC,eAAezpB,SAAQ8iB,GAAU7hB,EAAKyhC,kBAAkB5f,EAAQzgC,EAAQonC,cAAc3G,MAEvG7hB,CACX,CAWA,MAAMioC,GACS,EAAW,mBAyG1B,SAASd,GAAQ/lD,EAAU,CAAC,GACxB,MAAMoL,EAAWmyC,KACjB,GAAgB,MAAZnyC,EACA,MAAMyzC,GAAgBd,GAAeE,wBAEzC,IAAK7yC,EAAS07C,MACiB,MAA3B17C,EAAS4mC,WAAW+U,MACnB37C,EAAS4mC,WAAW+U,IAAIC,oBACzB,MAAMnI,GAAgBd,GAAeG,eAEzC,MAAM5qB,EAiFV,SAAyBloB,GACrB,CACI,MAAMkoB,EDvqBd,SAAgBj4B,EAAK0kB,EAAcknC,GAAwB,GAGvD,MAAM77C,EAAWipC,IAAmBT,GACpC,GAAIxoC,EAAU,CAIV,MAAM87C,EAA8B,MAAnB97C,EAASu5B,OACpBv5B,EAASqmC,MAAMO,YAAc5mC,EAASqmC,MAAMO,WAAWkV,SACvD97C,EAASu5B,OAAOuiB,SACtB,GAAIA,GAAY7rD,KAAO6rD,EAEnB,OAAOA,EAAS7rD,GAEf,GAAIpD,UAAU1F,OAAS,EACxB,OAAO00D,GAAyB,GAAWlnC,GACrCA,EAAahsB,KAAKqX,EAASskC,OAC3B3vB,CAKd,CAIJ,CC4oBqBi6B,CAAQ5uC,EAAS07C,KAExBD,GADAz7C,EAAS4mC,WAAW+U,IAAIC,qBAG9B,IAAK1zB,EACD,MAAMurB,GAAiBzzC,EAAS07C,KAE1B/I,GAAeQ,2BADfR,GAAeS,kBAGzB,OAAOlrB,CACX,CACJ,CA9FiB6zB,CAAgB/7C,GACvBtY,EAyGV,SAA2BwgC,GAEvB,MAAqB,gBAAdA,EAAKh0B,KACFg0B,EAAKxgC,OACLwgC,EAAKxgC,OAAOqyD,UAE1B,CA/GmBiC,CAAkB9zB,GAC3B2sB,EAAmBF,GAAoB30C,GACvCi/B,EA6FV,SAAkBrqC,EAASigD,GAEvB,OAAOniB,EAAc99B,GACd,WAAYigD,EACT,QACA,SACHjgD,EAAQgmD,SAELhmD,EAAQgmD,SADR,OAEd,CAtGkBqB,CAASrnD,EAASigD,GAChC,GAAIqH,yBAEkB,WAAdh0B,EAAKh0B,OAAsBU,EAAQimD,eAAgB,CACnD,IAAK3yB,EAAKi0B,iBACN,MAAM1I,GAAgBd,GAAeI,8BAEzC,OAyKZ,SAA0B/yC,EAAUi/B,EAAOzrB,EAAM5e,EAAU,CAAC,GAExD,MAAMwnD,EAAqB,UAAVnd,EACXod,GAAuB,KFt2CtBpX,GEs2CsB,MFt2CL,IEu2CxB,GAAImX,GACAp8C,EAASskC,QACPtkC,EAASskC,MAAM8H,SAASlkB,OAAQloB,EAASskC,MAAM8H,SAAS+H,OAC1D,MAAMV,GAAgBd,GAAeY,8CAEzC,MAAMkC,GAAiB,EAAU7gD,EAAQ8gD,gBACnC9gD,EAAQ8gD,cAERC,EAAU,GAEhByG,GAAY3G,EACNjiC,EAAK6hB,OAAOhpC,MACZ,EAASuI,EAAQygC,QACbzgC,EAAQygC,OACRR,IACJ+gB,EAAkB,GAExBwG,GAAY3G,EACNjiC,EAAK8jB,eAAejrC,MACpB,EAASuI,EAAQ0iC,iBACf,EAAQ1iC,EAAQ0iC,iBAChB3E,EAAc/9B,EAAQ0iC,kBACK,IAA3B1iC,EAAQ0iC,eACN1iC,EAAQ0iC,eACRqe,EAAQtpD,OACZwpD,EAAY,GAAI3B,GAAkByB,EAAQtpD,MAAOuI,IAEjDkhD,EAAmB,GAAInjB,EAAc/9B,EAAQmmC,iBAC7CnmC,EAAQmmC,gBACR,CAAE,CAAC4a,EAAQtpD,OAAQ,CAAC,IAEpB0pD,EAAiB,GAAIpjB,EAAc/9B,EAAQonC,eAC3CpnC,EAAQonC,cACR,CAAE,CAAC2Z,EAAQtpD,OAAQ,CAAC,IAEpB2pD,EAAeoG,EACf5oC,EAAK0iB,aACL,EAAUthC,EAAQshC,eAAgB1D,EAAS59B,EAAQshC,cAC/CthC,EAAQshC,YAGZ+f,EAAgBmG,EAChB5oC,EAAKikB,cACL,EAAU7iC,EAAQ6iC,gBAAiBjF,EAAS59B,EAAQ6iC,eAChD7iC,EAAQ6iC,aAGZye,EAAgBkG,EAChB5oC,EAAK2iC,cACL,EAAUvhD,EAAQuhD,eACdvhD,EAAQuhD,aAGZC,IAAoBxhD,EAAQsiC,eAE5Bmf,EAAW,EAAWzhD,EAAQuhC,SAAWvhC,EAAQuhC,QAAU,KAE3DogB,EAAmB,EAAW3hD,EAAQuiC,iBACtCviC,EAAQuiC,gBACR,KAEAqf,EAAmB4F,EACnB5oC,EAAK6mB,iBACL,EAAUzlC,EAAQylC,kBACdzlC,EAAQylC,gBAEZoc,IAAqB7hD,EAAQ4iC,gBAE7Bkf,EAAa0F,EACb5oC,EAAK+kB,UACL5F,EAAc/9B,EAAQ2jC,WAClB3jC,EAAQ2jC,UACR,CAAC,EAELqe,EAAehiD,EAAQ4jC,aAAgB4jB,GAAY5oC,EAAKglB,YAoE9D,SAAS8jB,EAAazjC,GAElB,OAlEI88B,EAAQtpD,MACRupD,EAAgBvpD,MAChBwpD,EAAUxpD,MACVypD,EAAiBzpD,MACjB0pD,EAAe1pD,MA8DZwsB,GACX,CAqEA,MAAM0jC,EAAU,CACRx1B,SACA,OAAOs1B,EAAUhwD,MAAQgwD,EAAUhwD,MAAM06B,IAAM,CACnD,EACAsO,OApIW,GAAS,CACpB9+B,IAAK,IACM8lD,EAAUhwD,MAAQgwD,EAAUhwD,MAAMgpC,OAAOhpC,MAAQspD,EAAQtpD,MAEpEgX,IAAKgiB,IACGg3B,EAAUhwD,QACVgwD,EAAUhwD,MAAMgpC,OAAOhpC,MAAQg5B,GAEnCswB,EAAQtpD,MAAQg5B,CAAG,IA6HvBiS,eAzHmB,GAAS,CAC5B/gC,IAAK,IACM8lD,EAAUhwD,MACXgwD,EAAUhwD,MAAMirC,eAAejrC,MAC/BupD,EAAgBvpD,MAE1BgX,IAAKgiB,IACGg3B,EAAUhwD,QACVgwD,EAAUhwD,MAAMirC,eAAejrC,MAAQg5B,GAE3CuwB,EAAgBvpD,MAAQg5B,CAAG,IAgH/B6N,SA5Ga,IAAS,IAClBmpB,EAAUhwD,MAEHgwD,EAAUhwD,MAAM6mC,SAAS7mC,MAIzBwpD,EAAUxpD,QAsGrB0uC,gBAnGoB,IAAS,IAAM+a,EAAiBzpD,QAoGpD2vC,cAnGkB,IAAS,IAAM+Z,EAAe1pD,QAoG5CqpD,oBACA,OAAO2G,EAAUhwD,MAAQgwD,EAAUhwD,MAAMqpD,cAAgBD,CAC7D,EACIC,kBAAcrwB,GACVg3B,EAAUhwD,QACVgwD,EAAUhwD,MAAMqpD,cAAgBrwB,EAExC,EACI2yB,uBACA,OAAOqE,EAAUhwD,MACXgwD,EAAUhwD,MAAM2rD,iBAChBrqD,OAAOuK,KAAK29C,EAAUxpD,MAChC,EACIksC,gBACA,OAAQ8jB,EAAUhwD,MAAQgwD,EAAUhwD,MAAMksC,UAAYme,CAC1D,EACIle,kBACA,OAAQ6jB,EAAUhwD,MAAQgwD,EAAUhwD,MAAMmsC,YAAcoe,CAC5D,EACIqB,eACA,QAAOoE,EAAUhwD,OAAQgwD,EAAUhwD,MAAM4rD,QAC7C,EACI/hB,kBACA,OAAOmmB,EAAUhwD,MAAQgwD,EAAUhwD,MAAM6pC,YAAc8f,CAC3D,EACI9f,gBAAY7Q,GACRg3B,EAAUhwD,QACVgwD,EAAUhwD,MAAM6pC,YAAc7Q,EAEtC,EACIoS,mBACA,OAAO4kB,EAAUhwD,MAAQgwD,EAAUhwD,MAAMorC,aAAewe,CAC5D,EACIxe,iBAAapS,GACTg3B,EAAUhwD,QACVgwD,EAAUhwD,MAAM6pC,YAAc7Q,EAEtC,EACI8wB,mBACA,OAAOkG,EAAUhwD,MAAQgwD,EAAUhwD,MAAM8pD,aAAeD,CAC5D,EACIC,iBAAa9wB,GACTg3B,EAAUhwD,QACVgwD,EAAUhwD,MAAM8pD,aAAe9wB,EAEvC,EACI6R,qBACA,OAAOmlB,EAAUhwD,MAAQgwD,EAAUhwD,MAAM6qC,eAAiBkf,CAC9D,EACIlf,mBAAe7R,GACXg3B,EAAUhwD,QACVgwD,EAAUhwD,MAAM6qC,eAAiB7R,EAEzC,EACIgV,sBACA,OAAOgiB,EAAUhwD,MACXgwD,EAAUhwD,MAAMguC,gBAChBmc,CACV,EACInc,oBAAgBhV,GACZg3B,EAAUhwD,QACVgwD,EAAUhwD,MAAMguC,gBAAkBhV,EAE1C,EACImS,sBACA,OAAO6kB,EAAUhwD,MACXgwD,EAAUhwD,MAAMmrC,gBAChBif,CACV,EACIjf,oBAAgBnS,GACZg3B,EAAUhwD,QACVgwD,EAAUhwD,MAAMmrC,gBAAkBnS,EAE1C,EACAt9B,EAvJJ,YAAcqU,GACV,OAAOigD,EAAUhwD,MACXiwD,GAAa,IAAM9a,QAAQ50C,MAAMyvD,EAAUhwD,MAAMtE,EAAG,KAAM,IAAIqU,MAC9DkgD,GAAa,IAAM,IAC7B,EAoJInE,0BA9KJ,WACI,OAAOkE,EAAUhwD,MACXgwD,EAAUhwD,MAAM8rD,4BAChB5B,CACV,EA2KI6B,0BA1KJ,SAAmClO,GAC3BmS,EAAUhwD,OACVgwD,EAAUhwD,MAAM+rD,0BAA0BlO,EAElD,EAuKImO,kBAtKJ,WACI,OAAOgE,EAAUhwD,MAAQgwD,EAAUhwD,MAAMgsD,oBAAsBhC,CACnE,EAqKIiC,kBApKJ,SAA2BpO,GACnBmS,EAAUhwD,OACVgwD,EAAUhwD,MAAMisD,kBAAkBpO,EAE1C,EAiKIsO,GAvJJ,YAAep8C,GACX,OAAOigD,EAAUhwD,MACXm1C,QAAQ50C,MAAMyvD,EAAUhwD,MAAMmsD,GAAI,KAAM,IAAIp8C,IAC5C,EACV,EAoJI+qB,EAnJJ,YAAc/qB,GACV,OAAOigD,EAAUhwD,MACXiwD,GAAa,IAAM9a,QAAQ50C,MAAMyvD,EAAUhwD,MAAM86B,EAAG,KAAM,IAAI/qB,MAC9DkgD,GAAa,IAAM,IAC7B,EAgJIt0D,EA/IJ,YAAcoU,GACV,OAAOigD,EAAUhwD,MACXiwD,GAAa,IAAM9a,QAAQ50C,MAAMyvD,EAAUhwD,MAAMrE,EAAG,KAAM,IAAIoU,MAC9DkgD,GAAa,IAAM,IAC7B,EA4II5D,GA3IJ,SAAYzoD,GACR,OAAOosD,EAAUhwD,MAAQgwD,EAAUhwD,MAAMqsD,GAAGzoD,GAAO,CAAC,CACxD,EA0IIwoD,GAzIJ,SAAYxoD,EAAKolC,GACb,QAAOgnB,EAAUhwD,OAAQgwD,EAAUhwD,MAAMosD,GAAGxoD,EAAKolC,EACrD,EAwIIyiB,iBAvIJ,SAA0BziB,GACtB,OAAOgnB,EAAUhwD,MAAQgwD,EAAUhwD,MAAMyrD,iBAAiBziB,GAAU,CAAC,CACzE,EAsII6iB,iBArIJ,SAA0B7iB,EAAQlmB,GAC1BktC,EAAUhwD,QACVgwD,EAAUhwD,MAAM6rD,iBAAiB7iB,EAAQlmB,GACzC0mC,EAAUxpD,MAAMgpC,GAAUlmB,EAElC,EAiII4lC,mBAhIJ,SAA4B1f,EAAQlmB,GAC5BktC,EAAUhwD,OACVgwD,EAAUhwD,MAAM0oD,mBAAmB1f,EAAQlmB,EAEnD,EA6HI2pC,kBA5HJ,SAA2BzjB,GACvB,OAAOgnB,EAAUhwD,MAAQgwD,EAAUhwD,MAAMysD,kBAAkBzjB,GAAU,CAAC,CAC1E,EA2HI0jB,kBA1HJ,SAA2B1jB,EAAQzY,GAC3By/B,EAAUhwD,QACVgwD,EAAUhwD,MAAM0sD,kBAAkB1jB,EAAQzY,GAC1Ck5B,EAAiBzpD,MAAMgpC,GAAUzY,EAEzC,EAsHIo4B,oBArHJ,SAA6B3f,EAAQzY,GAC7By/B,EAAUhwD,OACVgwD,EAAUhwD,MAAM2oD,oBAAoB3f,EAAQzY,EAEpD,EAkHIo8B,gBAjHJ,SAAyB3jB,GACrB,OAAOgnB,EAAUhwD,MAAQgwD,EAAUhwD,MAAM2sD,gBAAgB3jB,GAAU,CAAC,CACxE,EAgHI4jB,gBA/GJ,SAAyB5jB,EAAQzY,GACzBy/B,EAAUhwD,QACVgwD,EAAUhwD,MAAM4sD,gBAAgB5jB,EAAQzY,GACxCm5B,EAAe1pD,MAAMgpC,GAAUzY,EAEvC,EA2GIq4B,kBA1GJ,SAA2B5f,EAAQzY,GAC3By/B,EAAUhwD,OACVgwD,EAAUhwD,MAAM4oD,kBAAkB5f,EAAQzY,EAElD,GA6IA,OAlBAguB,IAAc,KACV,GAAsB,MAAlB5qC,EAASskC,OAAyC,MAAxBtkC,EAASskC,MAAMkY,MACzC,MAAM/I,GAAgBd,GAAea,qCAGzC,MAAMuE,EAAYsE,EAAUhwD,MAAQ2T,EAASskC,MAAMkY,MAC9CzC,WACS,WAAV9a,GACA0W,EAAQtpD,MAAQ0rD,EAAS1iB,OAAOhpC,MAChCupD,EAAgBvpD,MAAQ0rD,EAASzgB,eAAejrC,MAChDwpD,EAAUxpD,MAAQ0rD,EAAS7kB,SAAS7mC,MACpCypD,EAAiBzpD,MAAQ0rD,EAAShd,gBAAgB1uC,MAClD0pD,EAAe1pD,MAAQ0rD,EAAS/b,cAAc3vC,OAEzC+vD,GAjCb,SAAcrE,GACVA,EAAS1iB,OAAOhpC,MAAQspD,EAAQtpD,MAChC0rD,EAASzgB,eAAejrC,MAAQupD,EAAgBvpD,MAChDsB,OAAOuK,KAAK29C,EAAUxpD,OAAOkmB,SAAQ8iB,IACjC0iB,EAAShD,mBAAmB1f,EAAQwgB,EAAUxpD,MAAMgpC,GAAQ,IAEhE1nC,OAAOuK,KAAK49C,EAAiBzpD,OAAOkmB,SAAQ8iB,IACxC0iB,EAAS/C,oBAAoB3f,EAAQygB,EAAiBzpD,MAAMgpC,GAAQ,IAExE1nC,OAAOuK,KAAK69C,EAAe1pD,OAAOkmB,SAAQ8iB,IACtC0iB,EAAS9C,kBAAkB5f,EAAQ0gB,EAAe1pD,MAAMgpC,GAAQ,IAEpE0iB,EAASvgB,gBAAkBif,EAC3BsB,EAAS7gB,eAAiBkf,EAC1B2B,EAAS5B,aAAeD,EACxB6B,EAAStgB,aAAewe,EACxB8B,EAAS7hB,YAAc8f,EACvB+B,EAAS1d,gBAAkBmc,CAC/B,CAgBQkD,CAAK3B,EACT,IAEGwE,CACX,CAhhBmBE,CAAiBz8C,EAAUi/B,EAAOv3C,EAAQkN,EACrD,CAEJ,GAAc,WAAVqqC,EAEA,OADA2V,GAAoBltD,EAAQkN,EAASigD,GAC9BntD,EAEX,GAAc,WAAVu3C,EAAoB,CAEpB,IAAI8Y,EA8FZ,SAAqB7vB,EAAM11B,EAAQkqD,GAAe,GAC9C,IAAI3E,EAAW,KACf,MAAMvkC,EAAOhhB,EAAOghB,KACpB,IAAIsnC,EAAUtoD,EAAO+mC,OACrB,KAAkB,MAAXuhB,GAAiB,CACpB,MAAM6B,EAAez0B,EACrB,GAAkB,gBAAdA,EAAKh0B,KACL6jD,EAAW4E,EAAaC,cAAc9B,QAGtC,GAAIoB,wBAAyB,CACzB,MAAMrC,EAAU8C,EAAaC,cAAc9B,GAC5B,MAAXjB,IACA9B,EAAW8B,EACNE,WACD2C,GACA3E,IACCA,EAASjE,MAEViE,EAAW,MAGvB,CAEJ,GAAgB,MAAZA,EACA,MAEJ,GAAIvkC,IAASsnC,EACT,MAEJA,EAAUA,EAAQvhB,MACtB,CACA,OAAOwe,CACX,CA/HuB8E,CAAY30B,EAAMloB,EAAUpL,EAAQimD,gBAOnD,OANgB,MAAZ9C,IAIAA,EAAWrwD,GAERqwD,CACX,CACA,MAAM4E,EAAez0B,EACrB,IAAI6vB,EAAW4E,EAAaC,cAAc58C,GAC1C,GAAgB,MAAZ+3C,EAAkB,CAClB,MAAM+E,EAAkB,EAAO,CAAC,EAAGloD,GAC/B,WAAYigD,IACZiI,EAAgB3I,OAASU,EAAiBV,QAE1CzsD,IACAo1D,EAAgBvH,OAAS7tD,GAE7BqwD,EAAW1C,GAAeyH,GA6GlC,SAAwB50B,EAAM11B,EAAQulD,GAG9BlN,IAAU,KAIgB,GAQvBr4C,GACHs4C,IAAY,KAYR5iB,EAAK60B,iBAAiBvqD,EAAO,GAC9BA,EAEX,CA3IQwqD,CAAeL,EAAc38C,GAC7B28C,EAAaM,cAAcj9C,EAAU+3C,EACzC,CACA,OAAOA,CACX,CAgfA,MAAMmF,GAAoB,CACtB,SACA,iBACA,oBAEEC,GAAsB,CAAC,IAAK,KAAM,IAAK,IAAK,MJvmElD,IAjNyB7oB,GIm2EzB,GJjpEIoB,GAnXJ,SAAsBhpC,EAAKwa,GAEvB,IAAK,EAASxa,GACV,OAAO,KAGX,IAAI0wD,EAAMrwC,GAAMxW,IAAI2Q,GAQpB,GAPKk2C,IACDA,EAnIR,SAAel2C,GACX,MAAMhP,EAAO,GACb,IAGImF,EACApN,EACAotD,EACA3tD,EACAkhD,EACA5e,EACAsrB,EATAr2D,GAAS,EACTiN,EAAO,EACPqpD,EAAe,EAQnB,MAAMC,EAAU,GAuChB,SAASC,IACL,MAAMC,EAAWx2C,EAAKjgB,EAAQ,GAC9B,GAAc,IAATiN,GACY,MAAbwpD,GACU,IAATxpD,GACgB,MAAbwpD,EAIJ,OAHAz2D,IACAo2D,EAAU,KAAOK,EACjBF,EAAQ,MACD,CAEf,CACA,IAlDAA,EAAQ,GAAkB,UACVppD,IAARnE,EACAA,EAAMotD,EAGNptD,GAAOotD,CACX,EAEJG,EAAQ,GAAgB,UACRppD,IAARnE,IACAiI,EAAKpN,KAAKmF,GACVA,OAAMmE,EACV,EAEJopD,EAAQ,GAA8B,KAClCA,EAAQ,KACRD,GAAc,EAElBC,EAAQ,GAAyB,KAC7B,GAAID,EAAe,EACfA,IACArpD,EAAO,EACPspD,EAAQ,SAEP,CAED,GADAD,EAAe,OACHnpD,IAARnE,EACA,OAAO,EAGX,GADAA,EAvDZ,SAAuBiX,GACnB,MAAMy2C,EAAUz2C,EAAK8W,OAErB,OAAuB,MAAnB9W,EAAKuN,OAAO,KAAcjW,MAAMvH,SAASiQ,OAjD9B02C,EAoDED,EAnDVrqB,GAAe/9B,KAAKqoD,GAK/B,SAAqB/2D,GACjB,MAAMwB,EAAIxB,EAAIO,WAAW,GAEzB,OAAOiB,IADGxB,EAAIO,WAAWP,EAAIM,OAAS,IACb,KAANkB,GAAoB,KAANA,EAAiCxB,EAAnBA,EAAIoO,MAAM,GAAI,EACjE,CA2CU4oD,CAAYF,GACZ,IAAqBA,GAtD/B,IAAmBC,CAuDnB,CA8CkBE,CAAc7tD,IACR,IAARA,EACA,OAAO,EAGPutD,EAAQ,IAEhB,GAcY,OAATtpD,GAGH,GAFAjN,IACAoW,EAAI6J,EAAKjgB,GACC,OAANoW,IAAcogD,IAAlB,CAOA,GAJA/tD,EAAO6jC,GAAgBl2B,GACvBigD,EAAUjqB,GAAiBn/B,GAC3B08C,EAAa0M,EAAQ5tD,IAAS4tD,EAAsB,GAAK,EAEtC,IAAf1M,EACA,OAGJ,GADA18C,EAAO08C,EAAW,QACIx8C,IAAlBw8C,EAAW,KACX5e,EAASwrB,EAAQ5M,EAAW,IACxB5e,IACAqrB,EAAUhgD,GACO,IAAb20B,MACA,OAKZ,GAAa,IAAT99B,EACA,OAAOgE,CApBX,CAuBR,CAwCcmD,CAAM6L,GACRk2C,GACArwC,GAAM1J,IAAI6D,EAAMk2C,KAInBA,EACD,OAAO,KAGX,MAAMxyD,EAAMwyD,EAAIj2D,OAChB,IAAIk5B,EAAO3zB,EACPnE,EAAI,EACR,KAAOA,EAAIqC,GAAK,CACZ,MAAMy6B,EAAMhF,EAAK+8B,EAAI70D,IACrB,QAAY6L,IAARixB,EACA,OAAO,KAEXhF,EAAOgF,EACP98B,GACJ,CACA,OAAO83B,CACX,EAgWIsV,GIioEqBhB,GA1tFzB,WACI,IAAIopB,GAAW,EAC0B,kBAA9BC,4BACPD,GAAW,EACX,IAAgBC,2BAA4B,GAET,kBAA5B9B,0BACP6B,GAAW,EACX,IAAgB7B,yBAA0B,GAEL,kBAA9BriB,4BACP,IAAgBA,2BAA4B,EAOpD,CA0sFI,GAG2CA,0BAA2B,CACtE,MAAMrnC,EAAS,IACfA,EAAOyrD,aAAc,EJr2EA3pB,GIs2EL9hC,EAAO0rD,iCJr2EvB/pB,GAAWG,EIs2Ef,CCnvFA,IAAMpM,GDmjEN,SAAoBtzB,EAAU,CAAC,EAAG0gD,GAE9B,MAAM6I,EAAejC,yBAA2B,EAAUtnD,EAAQwpD,QACxDxpD,EAAQwpD,OACRlC,wBAEJmC,GAAoB,EAAUzpD,EAAQ0pD,kBACtC1pD,EAAQ0pD,gBAGRC,GAAqBrC,0BAA2BiC,KAC1CvpD,EAAQunD,iBAEdqC,EAAc,IAAI36C,KACjB46C,EAAaC,GAuKxB,SAAsB9pD,EAAS+pD,EAAYrJ,GAEvC,MAAMrW,EF5pEC,IAAItB,GADMC,WE8pEjB,CACI,MAAMlxC,EAAMwvD,yBAA2ByC,EACjC1f,EAAMhB,KAAI,IAAMkb,GAAcvkD,KAC9BqqC,EAAMhB,KAAI,IAAMoX,GAAezgD,KACrC,GAAW,MAAPlI,EACA,MAAM+mD,GAAgBd,GAAeS,kBAEzC,MAAO,CAACnU,EAAOvyC,EACnB,CACJ,CAnLoCkyD,CAAahqD,EAASupD,GAChDttC,EAAS,EAAkE,IAUjF,CACI,MAAMqX,EAAO,CAELh0B,WACA,OAAOgoD,yBAA2BiC,EAC5B,SACA,aACV,EAEIhC,uBACA,OAAOoC,CACX,EAEAp5B,cAAcw2B,KAAQ/mD,GAMlB+mD,EAAIC,oBAAsB/qC,EAC1B8qC,EAAIhN,QAAQgN,EAAIC,oBAAqB1zB,IAEhCi2B,GAAgBE,GAmmBrC,SAA4B1C,EAAK5D,GAC7B,MAAM7vB,EAAOv6B,OAAOk0B,OAAO,MAC3Bq7B,GAAkB3qC,SAAQwI,IACtB,MAAM8F,EAAOlzB,OAAOkxD,yBAAyB9G,EAAUh9B,GACvD,IAAK8F,EACD,MAAM4yB,GAAgBd,GAAeS,kBAEzC,MAAM9xB,EAAO,GAAMT,EAAKx0B,OAClB,CACEkK,IAAG,IACQsqB,EAAKx0B,MAAMA,MAGtBgX,IAAIgiB,GACAxE,EAAKx0B,MAAMA,MAAQg5B,CACvB,GAEF,CACE9uB,IAAG,IACQsqB,EAAKtqB,KAAOsqB,EAAKtqB,OAGpC5I,OAAOye,eAAe8b,EAAMnN,EAAMuG,EAAK,IAE3Cq6B,EAAItjD,OAAOymD,iBAAiBtC,MAAQt0B,EACpCi1B,GAAoB5qC,SAAQmQ,IACxB,MAAM7B,EAAOlzB,OAAOkxD,yBAAyB9G,EAAUr1B,GACvD,IAAK7B,IAASA,EAAKx0B,MACf,MAAMonD,GAAgBd,GAAeS,kBAEzCzlD,OAAOye,eAAeuvC,EAAItjD,OAAOymD,iBAAkB,IAAIp8B,IAAU7B,EAAK,GAE9E,CAloBoBk+B,CAAmBpD,EAAKzzB,EAAKxgC,QAG7Bs2D,2BA9kBpB,SAAerC,EAAKzzB,KAAStzB,GACzB,MAAMoqD,EAAgBrsB,EAAc/9B,EAAQ,IACtCA,EAAQ,GACR,CAAC,EACDqqD,IAAyBD,EAAcC,uBACvB,EAAUD,EAAcE,gBACxCF,EAAcE,iBAShBvD,EAAInL,UAAWyO,EAA0C,OAAnB1E,GAAYrrD,KAAeqrD,IACjEoB,EAAInL,UAAUjV,GAAarsC,KAAMqsC,IACjCogB,EAAInL,UAAU6K,GAAensD,KAAMmsD,KAInCM,EAAIwD,UAAU,IA9GtB,SAAqBj3B,GACjB,MAAMk3B,EAAYnsC,IACd,MAAM,SAAEjT,EAAQ,UAAEu4B,EAAS,MAAElsC,GAAU4mB,EAEvC,IAAKjT,IAAaA,EAASurC,EACvB,MAAMkI,GAAgBd,GAAeS,kBAEzC,MAAM2E,EAnBd,SAAuB7vB,EAAMloB,GACzB,MAAM28C,EAAez0B,EACrB,GAAkB,gBAAdA,EAAKh0B,KACL,OAAQyoD,EAAaC,cAAc58C,IAAakoB,EAAKxgC,OAEpD,CACD,MAAMmyD,EAAU8C,EAAaC,cAAc58C,GAC3C,OAAkB,MAAX65C,EACDA,EAAQE,WACR7xB,EAAKxgC,OAAOqyD,UACtB,CACJ,CAQyBsF,CAAcn3B,EAAMloB,EAASurC,GAIxC+T,EAAchE,GAAWjvD,GAC/B,MAAO,CACHm1C,QAAQ50C,MAAMmrD,EAAShwD,EAAGgwD,EAAU,IAAIwD,GAAW+D,KACnDvH,EACH,EAqCL,MAAO,CACHnK,QApCa,CAAC/D,EAAI52B,KAClB,MAAOssC,EAAaxH,GAAYqH,EAASnsC,GACrCof,GAAanK,EAAKxgC,SAAWqwD,IAE7BlO,EAAG2V,cAAgB9W,GAAMqP,EAAS1iB,QAAQ,KACtCpiB,EAAQjT,UAAYiT,EAAQjT,SAAS8sC,cAAc,KAG3DjD,EAAGkQ,WAAahC,EAChBlO,EAAG0V,YAAcA,CAAW,EA4B5BnR,UA1BgBvE,IACZxX,GAAawX,EAAG2V,gBAChB3V,EAAG2V,gBACH3V,EAAG2V,mBAAgBprD,SACZy1C,EAAG2V,eAEV3V,EAAGkQ,aACHlQ,EAAGkQ,gBAAa3lD,SACTy1C,EAAGkQ,WACd,EAkBAhM,aAhBW,CAAClE,GAAMx9C,YAClB,GAAIw9C,EAAGkQ,WAAY,CACf,MAAMhC,EAAWlO,EAAGkQ,WACduF,EAAchE,GAAWjvD,GAC/Bw9C,EAAG0V,YAAc/d,QAAQ50C,MAAMmrD,EAAShwD,EAAGgwD,EAAU,IAC9CwD,GAAW+D,IAEtB,GAUAG,YARiBxsC,IACjB,MAAOssC,GAAeH,EAASnsC,GAC/B,MAAO,CAAEssC,cAAa,EAQ9B,CAoD2BG,CAAYx3B,GAEvC,CAwjBoBt7B,CAAM+uD,EAAKzzB,KAAStzB,GAGpBsnD,yBAA2BiC,GAC3BxC,EAAIgE,MAtMxB,SAAqBC,EAAS7H,EAAU7vB,GACpC,MAAO,CACHwlB,eACI,MAAM1tC,EAAWmyC,KAEjB,IAAKnyC,EACD,MAAMyzC,GAAgBd,GAAeS,kBAEzC,MAAMx+C,EAAUhN,KAAKwkD,SACrB,GAAIx3C,EAAQszB,KAAM,CACd,MAAM23B,EAAcjrD,EAAQszB,KACxBtzB,EAAQu/C,SACR0L,EAAY1L,OAASv/C,EAAQu/C,QAEjC0L,EAAYtK,OAASwC,EACjBnwD,OAASA,KAAKskD,MACdtkD,KAAK40D,MAAQhB,GAAYoE,EAASC,IAGlCA,EAAY3G,oBAAqB,EACjCtxD,KAAK40D,MAAQrD,GAAc0G,GAEnC,MACSjrD,EAAQu/C,OACTvsD,OAASA,KAAKskD,MACdtkD,KAAK40D,MAAQhB,GAAYoE,EAAShrD,GAGlChN,KAAK40D,MAAQrD,GAAc,CACvBhF,OAAQv/C,EAAQu/C,OAChB+E,oBAAoB,EACpB3D,OAAQwC,IAMhBnwD,KAAK40D,MAAQoD,EAEbhrD,EAAQkgD,cACRF,GAAoBmD,EAAUnjD,EAASA,GAE3CgrD,EAAQ1F,6BAA6BtyD,KAAK40D,OAC1Ct0B,EAAK+0B,cAAcj9C,EAAUpY,KAAK40D,OAElC50D,KAAKk4D,GAAK,IAAI1jD,IAASxU,KAAK40D,MAAMz0D,KAAKqU,GACvCxU,KAAKm4D,IAAM,IAAI3jD,IAASxU,KAAK40D,MAAMhE,MAAMp8C,GACzCxU,KAAKo4D,IAAM,IAAI5jD,IAASxU,KAAK40D,MAAMxC,MAAM59C,GACzCxU,KAAKq4D,IAAM,CAAChwD,EAAKolC,IAAWztC,KAAK40D,MAAM/D,GAAGxoD,EAAKolC,GAC/CztC,KAAKs4D,GAAK,IAAI9jD,IAASxU,KAAK40D,MAAMr1B,KAAK/qB,GACvCxU,KAAKu4D,GAAK,IAAI/jD,IAASxU,KAAK40D,MAAMx0D,KAAKoU,GACvCxU,KAAKw4D,IAAOnwD,GAAQrI,KAAK40D,MAAM9D,GAAGzoD,EACtC,EACA69C,UAaA,EACAM,YACI,MAAMpuC,EAAWmyC,KAEjB,IAAKnyC,EACD,MAAMyzC,GAAgBd,GAAeS,yBAiBlCxrD,KAAKk4D,UACLl4D,KAAKm4D,WACLn4D,KAAKo4D,WACLp4D,KAAKq4D,WACLr4D,KAAKs4D,UACLt4D,KAAKu4D,UACLv4D,KAAKw4D,IACZl4B,EAAK60B,iBAAiB/8C,UACfpY,KAAK40D,KAChB,EAER,CAmG8B6D,CAAY3B,EAAUA,EAAS3E,WAAY7xB,IAGzD,MAAMo4B,EAAa3E,EAAI4E,QACvB5E,EAAI4E,QAAU,KACVr4B,EAAKs4B,UACLF,GAAY,CAoBpB,EAEI54D,aACA,OAAOg3D,CACX,EACA8B,UACI/B,EAAYh5B,MAChB,EAEA+4B,cAEA5B,cA7ER,SAAuBpM,GACnB,OAAOgO,EAAYjoD,IAAIi6C,IAAc,IACzC,EA6EQyM,cA5ER,SAAuBzM,EAAWxwC,GAC9Bw+C,EAAYn7C,IAAImtC,EAAWxwC,EAC/B,EA4EQ+8C,iBA3ER,SAA0BvM,GACtBgO,EAAYziB,OAAOyU,EACvB,GA2EI,OAAOtoB,CACX,CACJ,CCxpEau4B,CAAW,CAEtBprB,OAAQ,KACRiC,eAAgB,KAChBpE,SCRe,CACfwtB,GAAIp4D,EAAQ,MACZq4D,GAAIr4D,EAAQ,MACZs4D,GAAIt4D,EAAQ,KACZu4D,GAAIv4D,EAAQ,KACZw4D,GAAIx4D,EAAQ,MACZy4D,GAAIz4D,EAAQ,MACZ04D,GAAI14D,EAAQ,MACZ24D,GAAI34D,EAAQ,MACZ44D,GAAI54D,EAAQ,MACZ64D,GAAI74D,EAAQ,MACZ84D,GAAI94D,EAAQ,MACZ+4D,GAAI/4D,EAAQ,MACZg5D,GAAIh5D,EAAQ,KACZi5D,GAAIj5D,EAAQ,MACZk5D,GAAIl5D,EAAQ,KACZm5D,QAASn5D,EAAQ,MACjBo5D,GAAIp5D,EAAQ,MACZq5D,GAAIr5D,EAAQ,MACZs5D,GAAIt5D,EAAQ,KACZu5D,GAAIv5D,EAAQ,MACZw5D,GAAIx5D,EAAQ,MACZy5D,GAAIz5D,EAAQ,KACZ05D,GAAI15D,EAAQ,MACZ25D,GAAI35D,EAAQ,MACZ45D,GAAI55D,EAAQ,MACZmwD,GAAInwD,EAAQ,MACZ65D,GAAI75D,EAAQ,MACZ85D,GAAI95D,EAAQ,SDZd,SAAS+5D,KACP,OAAOC,QAAQC,SAAS,CAAEC,qBAAqB,IAC5C71D,MAAK,SAAC81D,GAAU,OAAKA,EAAWxqC,QAAO,YAAO,MAAgB,WAAhB,EAAJvoB,IAA4B,GAAC,GAC5E,CAEA,IAAMgzD,GAAS,6BAAG,sGACIC,IAAAA,QAAoB,WAAU,OAA5Cn3D,EAAQ,EAAH,KACL6pC,EAAS7pC,EAAM6M,OAAOuqD,mBAAqB,KACjD16B,GAAKmN,OAASA,EAAM,2CACrB,kBAJc,mCAMTwtB,GAAqB,6BAAG,WAAOC,GAAK,qGAfjCH,IAAAA,QAAoB,WACxBh2D,MAAK,SAAAjD,GAAI,OAAIA,EAAK2O,OAAO0qD,oBAAoB,IAef,OAApB,OAAPC,EAAU,EAAH,cACeX,KAAkB,OAA3B,OAAbY,EAAgB,EAAH,cACbP,KAAW,WACbM,GAAqC,IAAzBC,EAAc97D,OAAa,iBAGyC,OAF5EuC,EAAOo5D,EAAMp5D,KAAK8wC,OAElB5jB,EAAM,GAAH,OAAMjvB,KAAKu7D,aAAajkB,MAAK,gCAAwBv1C,EAAKy5D,iBAAe,UACvDvtD,MAAMghB,EAAK,CAAEwsC,QAAS,CAAEC,cAAe,UAAY35D,EAAK45D,gBAAiB,QAAlF,OAAZr7B,EAAe,EAAH,eACaA,EAAauS,OAAM,QAA5C+oB,EAAmB,EAAH,KAChBC,EAAqB/xB,EAAkB8xB,GAEvC/mB,EAAMxU,EAA0Bw7B,EAAoBt7B,IAE1DvgC,KAAKu7D,aAAaO,iBAAiBjnB,EAAInU,MAAOmU,GAAI,4CAErD,gBAhB0B,sCAkB3B70C,KAAK+7D,iBAAiB,OAAM,6BAAE,WAAOZ,GAAK,iEACpCA,EAAMp5D,MACRo5D,EAAMa,UAAUd,GAAsBC,IACvC,2CACF,mDAJ2B,IAM5Bn7D,KAAK+7D,iBAAiB,qBAAqB,SAACZ,GAC1CA,EAAM76B,aAAax2B,QAEnBqxD,EAAMa,UAAUtB,KAAmB11D,MAAK,SAACrG,GACvC,IAAK,IAAIiC,EAAI,EAAGA,EAAIjC,EAAKa,OAAQoB,IAAK,CACpC,IAAMq7D,EAASt9D,EAAKiC,GACpB,GAAmB,MAAfq7D,EAAOhtC,KAAe,UAAWgtC,EAAU,OAAOA,EAAOC,OAC/D,CAEA,GAAIvB,QAAQwB,WAAY,OAAOxB,QAAQwB,WAAW,IACpD,IACF","sources":["webpack://pleroma_fe/./src/i18n/ar.json","webpack://pleroma_fe/./src/i18n/ca.json","webpack://pleroma_fe/./src/i18n/cs.json","webpack://pleroma_fe/./src/i18n/de.json","webpack://pleroma_fe/./src/i18n/en.json","webpack://pleroma_fe/./src/i18n/eo.json","webpack://pleroma_fe/./src/i18n/es.json","webpack://pleroma_fe/./src/i18n/et.json","webpack://pleroma_fe/./src/i18n/eu.json","webpack://pleroma_fe/./src/i18n/fi.json","webpack://pleroma_fe/./src/i18n/fr.json","webpack://pleroma_fe/./src/i18n/ga.json","webpack://pleroma_fe/./src/i18n/he.json","webpack://pleroma_fe/./src/i18n/hu.json","webpack://pleroma_fe/./src/i18n/it.json","webpack://pleroma_fe/./src/i18n/ja_easy.json","webpack://pleroma_fe/./src/i18n/ja_pedantic.json","webpack://pleroma_fe/./src/i18n/ko.json","webpack://pleroma_fe/./src/i18n/nb.json","webpack://pleroma_fe/./src/i18n/nl.json","webpack://pleroma_fe/./src/i18n/oc.json","webpack://pleroma_fe/./src/i18n/pl.json","webpack://pleroma_fe/./src/i18n/pt.json","webpack://pleroma_fe/./src/i18n/ro.json","webpack://pleroma_fe/./src/i18n/ru.json","webpack://pleroma_fe/./src/i18n/sk.json","webpack://pleroma_fe/./src/i18n/te.json","webpack://pleroma_fe/./src/i18n/zh.json","webpack://pleroma_fe/./node_modules/escape-html/index.js","webpack://pleroma_fe/./node_modules/localforage/dist/localforage.js","webpack://pleroma_fe/./node_modules/lodash/_DataView.js","webpack://pleroma_fe/./node_modules/lodash/_Hash.js","webpack://pleroma_fe/./node_modules/lodash/_ListCache.js","webpack://pleroma_fe/./node_modules/lodash/_Map.js","webpack://pleroma_fe/./node_modules/lodash/_MapCache.js","webpack://pleroma_fe/./node_modules/lodash/_Promise.js","webpack://pleroma_fe/./node_modules/lodash/_Set.js","webpack://pleroma_fe/./node_modules/lodash/_SetCache.js","webpack://pleroma_fe/./node_modules/lodash/_Stack.js","webpack://pleroma_fe/./node_modules/lodash/_Symbol.js","webpack://pleroma_fe/./node_modules/lodash/_Uint8Array.js","webpack://pleroma_fe/./node_modules/lodash/_WeakMap.js","webpack://pleroma_fe/./node_modules/lodash/_apply.js","webpack://pleroma_fe/./node_modules/lodash/_arrayFilter.js","webpack://pleroma_fe/./node_modules/lodash/_arrayLikeKeys.js","webpack://pleroma_fe/./node_modules/lodash/_arrayMap.js","webpack://pleroma_fe/./node_modules/lodash/_arrayPush.js","webpack://pleroma_fe/./node_modules/lodash/_arraySome.js","webpack://pleroma_fe/./node_modules/lodash/_assocIndexOf.js","webpack://pleroma_fe/./node_modules/lodash/_baseEach.js","webpack://pleroma_fe/./node_modules/lodash/_baseFilter.js","webpack://pleroma_fe/./node_modules/lodash/_baseFindIndex.js","webpack://pleroma_fe/./node_modules/lodash/_baseFlatten.js","webpack://pleroma_fe/./node_modules/lodash/_baseFor.js","webpack://pleroma_fe/./node_modules/lodash/_baseForOwn.js","webpack://pleroma_fe/./node_modules/lodash/_baseGet.js","webpack://pleroma_fe/./node_modules/lodash/_baseGetAllKeys.js","webpack://pleroma_fe/./node_modules/lodash/_baseGetTag.js","webpack://pleroma_fe/./node_modules/lodash/_baseHasIn.js","webpack://pleroma_fe/./node_modules/lodash/_baseIndexOf.js","webpack://pleroma_fe/./node_modules/lodash/_baseIsArguments.js","webpack://pleroma_fe/./node_modules/lodash/_baseIsEqual.js","webpack://pleroma_fe/./node_modules/lodash/_baseIsEqualDeep.js","webpack://pleroma_fe/./node_modules/lodash/_baseIsMatch.js","webpack://pleroma_fe/./node_modules/lodash/_baseIsNaN.js","webpack://pleroma_fe/./node_modules/lodash/_baseIsNative.js","webpack://pleroma_fe/./node_modules/lodash/_baseIsTypedArray.js","webpack://pleroma_fe/./node_modules/lodash/_baseIteratee.js","webpack://pleroma_fe/./node_modules/lodash/_baseKeys.js","webpack://pleroma_fe/./node_modules/lodash/_baseMap.js","webpack://pleroma_fe/./node_modules/lodash/_baseMatches.js","webpack://pleroma_fe/./node_modules/lodash/_baseMatchesProperty.js","webpack://pleroma_fe/./node_modules/lodash/_baseOrderBy.js","webpack://pleroma_fe/./node_modules/lodash/_baseProperty.js","webpack://pleroma_fe/./node_modules/lodash/_basePropertyDeep.js","webpack://pleroma_fe/./node_modules/lodash/_baseRest.js","webpack://pleroma_fe/./node_modules/lodash/_baseSetToString.js","webpack://pleroma_fe/./node_modules/lodash/_baseSortBy.js","webpack://pleroma_fe/./node_modules/lodash/_baseTimes.js","webpack://pleroma_fe/./node_modules/lodash/_baseToString.js","webpack://pleroma_fe/./node_modules/lodash/_baseTrim.js","webpack://pleroma_fe/./node_modules/lodash/_baseUnary.js","webpack://pleroma_fe/./node_modules/lodash/_baseValues.js","webpack://pleroma_fe/./node_modules/lodash/_cacheHas.js","webpack://pleroma_fe/./node_modules/lodash/_castPath.js","webpack://pleroma_fe/./node_modules/lodash/_compareAscending.js","webpack://pleroma_fe/./node_modules/lodash/_compareMultiple.js","webpack://pleroma_fe/./node_modules/lodash/_coreJsData.js","webpack://pleroma_fe/./node_modules/lodash/_createBaseEach.js","webpack://pleroma_fe/./node_modules/lodash/_createBaseFor.js","webpack://pleroma_fe/./node_modules/lodash/_defineProperty.js","webpack://pleroma_fe/./node_modules/lodash/_equalArrays.js","webpack://pleroma_fe/./node_modules/lodash/_equalByTag.js","webpack://pleroma_fe/./node_modules/lodash/_equalObjects.js","webpack://pleroma_fe/./node_modules/lodash/_freeGlobal.js","webpack://pleroma_fe/./node_modules/lodash/_getAllKeys.js","webpack://pleroma_fe/./node_modules/lodash/_getMapData.js","webpack://pleroma_fe/./node_modules/lodash/_getMatchData.js","webpack://pleroma_fe/./node_modules/lodash/_getNative.js","webpack://pleroma_fe/./node_modules/lodash/_getRawTag.js","webpack://pleroma_fe/./node_modules/lodash/_getSymbols.js","webpack://pleroma_fe/./node_modules/lodash/_getTag.js","webpack://pleroma_fe/./node_modules/lodash/_getValue.js","webpack://pleroma_fe/./node_modules/lodash/_hasPath.js","webpack://pleroma_fe/./node_modules/lodash/_hashClear.js","webpack://pleroma_fe/./node_modules/lodash/_hashDelete.js","webpack://pleroma_fe/./node_modules/lodash/_hashGet.js","webpack://pleroma_fe/./node_modules/lodash/_hashHas.js","webpack://pleroma_fe/./node_modules/lodash/_hashSet.js","webpack://pleroma_fe/./node_modules/lodash/_isFlattenable.js","webpack://pleroma_fe/./node_modules/lodash/_isIndex.js","webpack://pleroma_fe/./node_modules/lodash/_isIterateeCall.js","webpack://pleroma_fe/./node_modules/lodash/_isKey.js","webpack://pleroma_fe/./node_modules/lodash/_isKeyable.js","webpack://pleroma_fe/./node_modules/lodash/_isMasked.js","webpack://pleroma_fe/./node_modules/lodash/_isPrototype.js","webpack://pleroma_fe/./node_modules/lodash/_isStrictComparable.js","webpack://pleroma_fe/./node_modules/lodash/_listCacheClear.js","webpack://pleroma_fe/./node_modules/lodash/_listCacheDelete.js","webpack://pleroma_fe/./node_modules/lodash/_listCacheGet.js","webpack://pleroma_fe/./node_modules/lodash/_listCacheHas.js","webpack://pleroma_fe/./node_modules/lodash/_listCacheSet.js","webpack://pleroma_fe/./node_modules/lodash/_mapCacheClear.js","webpack://pleroma_fe/./node_modules/lodash/_mapCacheDelete.js","webpack://pleroma_fe/./node_modules/lodash/_mapCacheGet.js","webpack://pleroma_fe/./node_modules/lodash/_mapCacheHas.js","webpack://pleroma_fe/./node_modules/lodash/_mapCacheSet.js","webpack://pleroma_fe/./node_modules/lodash/_mapToArray.js","webpack://pleroma_fe/./node_modules/lodash/_matchesStrictComparable.js","webpack://pleroma_fe/./node_modules/lodash/_memoizeCapped.js","webpack://pleroma_fe/./node_modules/lodash/_nativeCreate.js","webpack://pleroma_fe/./node_modules/lodash/_nativeKeys.js","webpack://pleroma_fe/./node_modules/lodash/_nodeUtil.js","webpack://pleroma_fe/./node_modules/lodash/_objectToString.js","webpack://pleroma_fe/./node_modules/lodash/_overArg.js","webpack://pleroma_fe/./node_modules/lodash/_overRest.js","webpack://pleroma_fe/./node_modules/lodash/_root.js","webpack://pleroma_fe/./node_modules/lodash/_setCacheAdd.js","webpack://pleroma_fe/./node_modules/lodash/_setCacheHas.js","webpack://pleroma_fe/./node_modules/lodash/_setToArray.js","webpack://pleroma_fe/./node_modules/lodash/_setToString.js","webpack://pleroma_fe/./node_modules/lodash/_shortOut.js","webpack://pleroma_fe/./node_modules/lodash/_stackClear.js","webpack://pleroma_fe/./node_modules/lodash/_stackDelete.js","webpack://pleroma_fe/./node_modules/lodash/_stackGet.js","webpack://pleroma_fe/./node_modules/lodash/_stackHas.js","webpack://pleroma_fe/./node_modules/lodash/_stackSet.js","webpack://pleroma_fe/./node_modules/lodash/_strictIndexOf.js","webpack://pleroma_fe/./node_modules/lodash/_stringToPath.js","webpack://pleroma_fe/./node_modules/lodash/_toKey.js","webpack://pleroma_fe/./node_modules/lodash/_toSource.js","webpack://pleroma_fe/./node_modules/lodash/_trimmedEndIndex.js","webpack://pleroma_fe/./node_modules/lodash/constant.js","webpack://pleroma_fe/./node_modules/lodash/eq.js","webpack://pleroma_fe/./node_modules/lodash/filter.js","webpack://pleroma_fe/./node_modules/lodash/get.js","webpack://pleroma_fe/./node_modules/lodash/hasIn.js","webpack://pleroma_fe/./node_modules/lodash/identity.js","webpack://pleroma_fe/./node_modules/lodash/includes.js","webpack://pleroma_fe/./node_modules/lodash/isArguments.js","webpack://pleroma_fe/./node_modules/lodash/isArray.js","webpack://pleroma_fe/./node_modules/lodash/isArrayLike.js","webpack://pleroma_fe/./node_modules/lodash/isBuffer.js","webpack://pleroma_fe/./node_modules/lodash/isFunction.js","webpack://pleroma_fe/./node_modules/lodash/isLength.js","webpack://pleroma_fe/./node_modules/lodash/isObject.js","webpack://pleroma_fe/./node_modules/lodash/isObjectLike.js","webpack://pleroma_fe/./node_modules/lodash/isString.js","webpack://pleroma_fe/./node_modules/lodash/isSymbol.js","webpack://pleroma_fe/./node_modules/lodash/isTypedArray.js","webpack://pleroma_fe/./node_modules/lodash/keys.js","webpack://pleroma_fe/./node_modules/lodash/memoize.js","webpack://pleroma_fe/./node_modules/lodash/property.js","webpack://pleroma_fe/./node_modules/lodash/sortBy.js","webpack://pleroma_fe/./node_modules/lodash/stubArray.js","webpack://pleroma_fe/./node_modules/lodash/stubFalse.js","webpack://pleroma_fe/./node_modules/lodash/toFinite.js","webpack://pleroma_fe/./node_modules/lodash/toInteger.js","webpack://pleroma_fe/./node_modules/lodash/toNumber.js","webpack://pleroma_fe/./node_modules/lodash/toString.js","webpack://pleroma_fe/./node_modules/lodash/values.js","webpack://pleroma_fe/./node_modules/parse-link-header/index.js","webpack://pleroma_fe/./node_modules/punycode/punycode.js","webpack://pleroma_fe/./node_modules/querystring/decode.js","webpack://pleroma_fe/./node_modules/querystring/encode.js","webpack://pleroma_fe/./node_modules/querystring/index.js","webpack://pleroma_fe/./node_modules/url/url.js","webpack://pleroma_fe/./node_modules/url/util.js","webpack://pleroma_fe/./node_modules/xtend/immutable.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/regeneratorRuntime.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/typeof.js","webpack://pleroma_fe/./node_modules/@babel/runtime/regenerator/index.js","webpack://pleroma_fe/webpack/bootstrap","webpack://pleroma_fe/webpack/runtime/compat get default export","webpack://pleroma_fe/webpack/runtime/define property getters","webpack://pleroma_fe/webpack/runtime/global","webpack://pleroma_fe/webpack/runtime/hasOwnProperty shorthand","webpack://pleroma_fe/webpack/runtime/make namespace object","webpack://pleroma_fe/webpack/runtime/node module decorator","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://pleroma_fe/./src/services/notification_utils/notification_utils.js","webpack://pleroma_fe/./node_modules/punycode.js/punycode.es6.js","webpack://pleroma_fe/./src/services/entity_normalizer/entity_normalizer.service.js","webpack://pleroma_fe/./node_modules/@intlify/shared/dist/shared.esm-bundler.js","webpack://pleroma_fe/./node_modules/@intlify/message-compiler/dist/message-compiler.esm-bundler.js","webpack://pleroma_fe/./node_modules/@intlify/devtools-if/dist/devtools-if.esm-bundler.js","webpack://pleroma_fe/./node_modules/@intlify/core-base/dist/core-base.esm-bundler.js","webpack://pleroma_fe/./node_modules/@vue/shared/dist/shared.esm-bundler.js","webpack://pleroma_fe/./node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js","webpack://pleroma_fe/./node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js","webpack://pleroma_fe/./node_modules/vue-i18n/dist/vue-i18n.runtime.esm-bundler.js","webpack://pleroma_fe/./src/sw.js","webpack://pleroma_fe/./src/i18n/service_worker_messages.js"],"sourcesContent":["export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"منشور مجهول، جارٍ البحث عنه…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أعجِب بمنشورك\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"يُتابعك\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"تحميل الإشعارات الأقدم\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الإخطارات\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"مقروء!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"شارَك منشورك\"])}\n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Publicació desconeguda, s'està cercant…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ha marcat un estat teu\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ha començat a seguir-te\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Carrega més notificacions\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notificacions\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Llegit!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ha repetit el teu estat\"])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"migrat a\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No més notificacions\"])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"et vol seguir\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"ha reaccionat amb \", _interpolate(_list(0))])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Error obtenint notificacions: \", _interpolate(_list(0))])}\n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Neznámý příspěvek, hledám jej…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"si oblíbil/a váš příspěvek\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vás nyní sleduje\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Načíst starší oznámení\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Oznámení\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Číst!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"zopakoval/a váš příspěvek\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Žádná další oznámení\"])}\n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unbekannte Nachricht, suche danach…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"favorisierte deine Nachricht\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"folgt dir\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ältere Benachrichtigungen laden\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Benachrichtigungen\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gelesen!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"wiederholte deine Nachricht\"])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"möchte dir folgen\"])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"migrierte zu\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"reagierte mit \", _interpolate(_list(0))])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keine Benachrichtigungen mehr\"])},\n \"error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error beim laden von Neuigkeiten\"])}\n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unknown status, searching for it…\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Error fetching notifications: \", _interpolate(_list(0))])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"favorited your status\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"followed you\"])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"wants to follow you\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Load older notifications\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notifications\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Read!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"repeated your status\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No more notifications\"])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"migrated to\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"reacted with \", _interpolate(_list(0))])},\n \"submitted_report\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"submitted a report\"])},\n \"poll_ended\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"poll has ended\"])}\n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nekonata stato, serĉante ĝin…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ŝatis vian staton\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ekabonis vin\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enlegi pli malnovajn sciigojn\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sciigoj\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Legite!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ripetis vian staton\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Neniuj pliaj sciigoj\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"reagis per \", _interpolate(_list(0))])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"migris al\"])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"volas vin aboni\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Eraris akirado de sciigoj: \", _interpolate(_list(0))])},\n \"submitted_report\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sendis raporton\"])},\n \"poll_ended\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"enketo finiĝis\"])}\n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Estado desconocido, buscándolo…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"le gusta tu estado\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"empezó a seguirte\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cargar notificaciones antiguas\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notificaciones\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"¡Leído!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"repitió tu estado\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No hay más notificaciones\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"reaccionó con \", _interpolate(_list(0))])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"migrado a\"])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"quiere seguirte\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Error obteniendo notificaciones:\", _interpolate(_list(0))])}\n }\n}","export default {\n \"notifications\": {\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"alustas sinu jälgimist\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Teated\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Loe!\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"reageeris \", _interpolate(_list(0))])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"kolis\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Rohkem teateid ei ole\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"taaspostitas su staatuse\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Laadi vanemad teated\"])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"soovib Teid jälgida\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"lisas su staatuse lemmikuks\"])},\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tundmatu staatus, otsin…\"])}\n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Egoera ezezaguna, bilatzen…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"zure mezua gogoko du\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Zu jarraitzen zaitu\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kargatu jakinarazpen zaharragoak\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Jakinarazpenak\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Irakurrita!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"zure mezua errepikatu du\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ez dago jakinarazpen gehiago\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"kin erreakzionatu zuen\"])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"hona migratua:\"])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"jarraitu nahi zaitu\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Errorea jakinarazpenak eskuratzean: \", _interpolate(_list(0))])}\n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Viestiä ei löydetty…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"tykkäsi viestistäsi\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"seuraa sinua\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lataa vanhempia ilmoituksia\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ilmoitukset\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lue!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"toisti viestisi\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ei enempää ilmoituksia\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"lisäsi reaktion \", _interpolate(_list(0))])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"siirtyi sivulle\"])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"haluaa seurata sinua\"])}\n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Message inconnu, recherche en cours…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"a aimé votre statut\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vous suit\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Charger les notifications précédentes\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notifications\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lu !\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"a partagé votre statut\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aucune notification supplémentaire\"])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"a migré à\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"a réagi avec \", _interpolate(_list(0))])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"veut vous suivre\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Erreur de chargement des notifications : \", _interpolate(_list(0))])},\n \"poll_ended\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sondage terminé\"])},\n \"submitted_report\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Rapport envoyé\"])}\n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Post anaithnid. Cuardach dó…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"toghadh le do phost\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"lean tú\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Luchtaigh fógraí aosta\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fógraí\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Léigh!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"athphostáil tú\"])}\n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"סטאטוס לא ידוע, מחפש…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"אהב את הסטטוס שלך\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"עקב אחריך\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"טען התראות ישנות\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"התראות\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"קרא!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"חזר על הסטטוס שלך\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"לא עוד התראות\"])}\n }\n}","export default {\n \"notifications\": {\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"követ téged\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Értesítések\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Olvasva!\"])}\n }\n}","export default {\n \"notifications\": {\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ti segue\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notifiche\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Letto!\"])},\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Stato sconosciuto, lo sto cercando…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ha gradito\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Carica notifiche precedenti\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ha condiviso il tuo messaggio\"])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vuole seguirti\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fine delle notifiche\"])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"è migrato verso\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"ha reagito con \", _interpolate(_list(0))])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Errore nel caricare le notifiche: \", _interpolate(_list(0))])}\n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ステータスがみつかりません。さがしています…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"あなたのステータスがおきにいりされました\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"フォローされました\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ふるいつうちをみる\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"つうち\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"よんだ!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"あなたのステータスがリピートされました\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"つうちはありません\"])}\n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ステータスが見つかりません。探しています…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"あなたのステータスがお気に入りされました\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"フォローされました\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"古い通知をみる\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"通知\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"読んだ!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"あなたのステータスがリピートされました\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"通知はありません\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" でリアクションしました\"])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"インスタンスを引っ越しました\"])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"あなたをフォローしたいです\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"通知の取得に失敗しました: \", _interpolate(_list(0))])}\n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"알 수 없는 게시물입니다, 검색합니다…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"관심을 가짐\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로우함\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이전 알림 불러오기\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"알림\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"읽음!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"리핏함\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"알림이 없습니다\"])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이사했습니다\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 로 반응했습니다\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"알림 불러오기 실패: \", _interpolate(_list(0))])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로우 요청\"])},\n \"submitted_report\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"신고 내용을 전송함\"])},\n \"poll_ended\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"투표가 끝남\"])}\n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ukjent status, leter etter den…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"likte din status\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"fulgte deg\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Last eldre varsler\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Varslinger\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Les!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gjentok din status\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ingen gjenstående varsler\"])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ønsker å følge deg\"])}\n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Onbekend bericht, aan het zoeken…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vond je bericht leuk\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"volgt jou\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Oudere meldingen laden\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Meldingen\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gelezen!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"herhaalde je bericht\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen meldingen meer\"])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"is gemigreerd naar\"])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"wil je volgen\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"reageerde met \", _interpolate(_list(0))])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Fout bij ophalen van meldingen: \", _interpolate(_list(0))])},\n \"poll_ended\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"peiling is beëindigd\"])}\n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Estatut desconegut, sèm a lo cercar...\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"a aimat vòstre estatut\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vos a seguit\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cargar las notificacions mai ancianas\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notficacions\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Legit !\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"a repetit vòstre estatut\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas mai de notificacions\"])}\n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nieznany status, szukam go…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"dodał(-a) twój status do ulubionych\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"obserwuje cię\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Załaduj starsze powiadomienia\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Powiadomienia\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Przeczytane!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"powtórzył(-a) twój status\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nie masz więcej powiadomień\"])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"wyemigrował do\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"zareagował z \", _interpolate(_list(0))])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"chce ciebie obserwować\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Błąd pobierania powiadomień: \", _interpolate(_list(0))])}\n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Publicação desconhecida, a procurar…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"gostou do teu post\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"seguiu-te\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Carregar notificações antigas\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notificações\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lido!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"partilhou o teu post\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sem mais notificações\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"reagiu com \", _interpolate(_list(0))])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"migrou para\"])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"quer seguir-te\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Erro ao obter notificações: \", _interpolate(_list(0))])}\n }\n}","export default {\n \"notifications\": {\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"te-a urmărit\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notificări\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Citit!\"])}\n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Неизвестный статус, ищем…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"нравится ваш статус\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"начал(а) читать вас\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Загрузить старые уведомления\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Уведомления\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Прочесть\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"повторил(а) ваш статус\"])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"хочет читать вас\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"добавил(а) реакцию: \", _interpolate(_list(0))])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"перехал на\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Нет дальнейших уведомлений\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Ошибка при обновлении уведомлений: \", _interpolate(_list(0))])}\n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Neznáma správa, dohľadávam ju…\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Chyba získavania upozornení: \", _interpolate(_list(0))])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"si obľúbil tvoju správu\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ťa nasleduje\"])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ťa chce nasledovať\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nahrať staršie upozornenia\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Upozornenia\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Prečítané!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"zopakoval tvoju správu\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Žiadne ďalšie upozornenia\"])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sa presťahoval na\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"reagoval nasledovne \", _interpolate(_list(0))])}\n }\n}","export default {\n \"notifications\": {\n \n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"未知的状态,正在搜索中…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"喜欢了你的状态\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"关注了你\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"加载更早的通知\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"通知\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"已阅!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"转发了你的状态\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"没有更多的通知\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"作出了 \", _interpolate(_list(0)), \" 的反应\"])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"迁移到了\"])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"想要关注你\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"取得通知时发生错误:\", _interpolate(_list(0))])},\n \"poll_ended\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"投票结束了\"])}\n }\n}","/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n","/*!\n localForage -- Offline Storage, Improved\n Version 1.10.0\n https://localforage.github.io/localForage\n (c) 2013-2017 Mozilla, Apache License 2.0\n*/\n(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.localforage = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw (f.code=\"MODULE_NOT_FOUND\", f)}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var scriptEl = global.document.createElement('script');\n scriptEl.onreadystatechange = function () {\n nextTick();\n\n scriptEl.onreadystatechange = null;\n scriptEl.parentNode.removeChild(scriptEl);\n scriptEl = null;\n };\n global.document.documentElement.appendChild(scriptEl);\n };\n } else {\n scheduleDrain = function () {\n setTimeout(nextTick, 0);\n };\n }\n}\n\nvar draining;\nvar queue = [];\n//named nextTick for less confusing stack traces\nfunction nextTick() {\n draining = true;\n var i, oldQueue;\n var len = queue.length;\n while (len) {\n oldQueue = queue;\n queue = [];\n i = -1;\n while (++i < len) {\n oldQueue[i]();\n }\n len = queue.length;\n }\n draining = false;\n}\n\nmodule.exports = immediate;\nfunction immediate(task) {\n if (queue.push(task) === 1 && !draining) {\n scheduleDrain();\n }\n}\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{}],2:[function(_dereq_,module,exports){\n'use strict';\nvar immediate = _dereq_(1);\n\n/* istanbul ignore next */\nfunction INTERNAL() {}\n\nvar handlers = {};\n\nvar REJECTED = ['REJECTED'];\nvar FULFILLED = ['FULFILLED'];\nvar PENDING = ['PENDING'];\n\nmodule.exports = Promise;\n\nfunction Promise(resolver) {\n if (typeof resolver !== 'function') {\n throw new TypeError('resolver must be a function');\n }\n this.state = PENDING;\n this.queue = [];\n this.outcome = void 0;\n if (resolver !== INTERNAL) {\n safelyResolveThenable(this, resolver);\n }\n}\n\nPromise.prototype[\"catch\"] = function (onRejected) {\n return this.then(null, onRejected);\n};\nPromise.prototype.then = function (onFulfilled, onRejected) {\n if (typeof onFulfilled !== 'function' && this.state === FULFILLED ||\n typeof onRejected !== 'function' && this.state === REJECTED) {\n return this;\n }\n var promise = new this.constructor(INTERNAL);\n if (this.state !== PENDING) {\n var resolver = this.state === FULFILLED ? onFulfilled : onRejected;\n unwrap(promise, resolver, this.outcome);\n } else {\n this.queue.push(new QueueItem(promise, onFulfilled, onRejected));\n }\n\n return promise;\n};\nfunction QueueItem(promise, onFulfilled, onRejected) {\n this.promise = promise;\n if (typeof onFulfilled === 'function') {\n this.onFulfilled = onFulfilled;\n this.callFulfilled = this.otherCallFulfilled;\n }\n if (typeof onRejected === 'function') {\n this.onRejected = onRejected;\n this.callRejected = this.otherCallRejected;\n }\n}\nQueueItem.prototype.callFulfilled = function (value) {\n handlers.resolve(this.promise, value);\n};\nQueueItem.prototype.otherCallFulfilled = function (value) {\n unwrap(this.promise, this.onFulfilled, value);\n};\nQueueItem.prototype.callRejected = function (value) {\n handlers.reject(this.promise, value);\n};\nQueueItem.prototype.otherCallRejected = function (value) {\n unwrap(this.promise, this.onRejected, value);\n};\n\nfunction unwrap(promise, func, value) {\n immediate(function () {\n var returnValue;\n try {\n returnValue = func(value);\n } catch (e) {\n return handlers.reject(promise, e);\n }\n if (returnValue === promise) {\n handlers.reject(promise, new TypeError('Cannot resolve promise with itself'));\n } else {\n handlers.resolve(promise, returnValue);\n }\n });\n}\n\nhandlers.resolve = function (self, value) {\n var result = tryCatch(getThen, value);\n if (result.status === 'error') {\n return handlers.reject(self, result.value);\n }\n var thenable = result.value;\n\n if (thenable) {\n safelyResolveThenable(self, thenable);\n } else {\n self.state = FULFILLED;\n self.outcome = value;\n var i = -1;\n var len = self.queue.length;\n while (++i < len) {\n self.queue[i].callFulfilled(value);\n }\n }\n return self;\n};\nhandlers.reject = function (self, error) {\n self.state = REJECTED;\n self.outcome = error;\n var i = -1;\n var len = self.queue.length;\n while (++i < len) {\n self.queue[i].callRejected(error);\n }\n return self;\n};\n\nfunction getThen(obj) {\n // Make sure we only access the accessor once as required by the spec\n var then = obj && obj.then;\n if (obj && (typeof obj === 'object' || typeof obj === 'function') && typeof then === 'function') {\n return function appyThen() {\n then.apply(obj, arguments);\n };\n }\n}\n\nfunction safelyResolveThenable(self, thenable) {\n // Either fulfill, reject or reject with error\n var called = false;\n function onError(value) {\n if (called) {\n return;\n }\n called = true;\n handlers.reject(self, value);\n }\n\n function onSuccess(value) {\n if (called) {\n return;\n }\n called = true;\n handlers.resolve(self, value);\n }\n\n function tryToUnwrap() {\n thenable(onSuccess, onError);\n }\n\n var result = tryCatch(tryToUnwrap);\n if (result.status === 'error') {\n onError(result.value);\n }\n}\n\nfunction tryCatch(func, value) {\n var out = {};\n try {\n out.value = func(value);\n out.status = 'success';\n } catch (e) {\n out.status = 'error';\n out.value = e;\n }\n return out;\n}\n\nPromise.resolve = resolve;\nfunction resolve(value) {\n if (value instanceof this) {\n return value;\n }\n return handlers.resolve(new this(INTERNAL), value);\n}\n\nPromise.reject = reject;\nfunction reject(reason) {\n var promise = new this(INTERNAL);\n return handlers.reject(promise, reason);\n}\n\nPromise.all = all;\nfunction all(iterable) {\n var self = this;\n if (Object.prototype.toString.call(iterable) !== '[object Array]') {\n return this.reject(new TypeError('must be an array'));\n }\n\n var len = iterable.length;\n var called = false;\n if (!len) {\n return this.resolve([]);\n }\n\n var values = new Array(len);\n var resolved = 0;\n var i = -1;\n var promise = new this(INTERNAL);\n\n while (++i < len) {\n allResolver(iterable[i], i);\n }\n return promise;\n function allResolver(value, i) {\n self.resolve(value).then(resolveFromAll, function (error) {\n if (!called) {\n called = true;\n handlers.reject(promise, error);\n }\n });\n function resolveFromAll(outValue) {\n values[i] = outValue;\n if (++resolved === len && !called) {\n called = true;\n handlers.resolve(promise, values);\n }\n }\n }\n}\n\nPromise.race = race;\nfunction race(iterable) {\n var self = this;\n if (Object.prototype.toString.call(iterable) !== '[object Array]') {\n return this.reject(new TypeError('must be an array'));\n }\n\n var len = iterable.length;\n var called = false;\n if (!len) {\n return this.resolve([]);\n }\n\n var i = -1;\n var promise = new this(INTERNAL);\n\n while (++i < len) {\n resolver(iterable[i]);\n }\n return promise;\n function resolver(value) {\n self.resolve(value).then(function (response) {\n if (!called) {\n called = true;\n handlers.resolve(promise, response);\n }\n }, function (error) {\n if (!called) {\n called = true;\n handlers.reject(promise, error);\n }\n });\n }\n}\n\n},{\"1\":1}],3:[function(_dereq_,module,exports){\n(function (global){\n'use strict';\nif (typeof global.Promise !== 'function') {\n global.Promise = _dereq_(2);\n}\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"2\":2}],4:[function(_dereq_,module,exports){\n'use strict';\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction getIDB() {\n /* global indexedDB,webkitIndexedDB,mozIndexedDB,OIndexedDB,msIndexedDB */\n try {\n if (typeof indexedDB !== 'undefined') {\n return indexedDB;\n }\n if (typeof webkitIndexedDB !== 'undefined') {\n return webkitIndexedDB;\n }\n if (typeof mozIndexedDB !== 'undefined') {\n return mozIndexedDB;\n }\n if (typeof OIndexedDB !== 'undefined') {\n return OIndexedDB;\n }\n if (typeof msIndexedDB !== 'undefined') {\n return msIndexedDB;\n }\n } catch (e) {\n return;\n }\n}\n\nvar idb = getIDB();\n\nfunction isIndexedDBValid() {\n try {\n // Initialize IndexedDB; fall back to vendor-prefixed versions\n // if needed.\n if (!idb || !idb.open) {\n return false;\n }\n // We mimic PouchDB here;\n //\n // We test for openDatabase because IE Mobile identifies itself\n // as Safari. Oh the lulz...\n var isSafari = typeof openDatabase !== 'undefined' && /(Safari|iPhone|iPad|iPod)/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent) && !/BlackBerry/.test(navigator.platform);\n\n var hasFetch = typeof fetch === 'function' && fetch.toString().indexOf('[native code') !== -1;\n\n // Safari <10.1 does not meet our requirements for IDB support\n // (see: https://github.com/pouchdb/pouchdb/issues/5572).\n // Safari 10.1 shipped with fetch, we can use that to detect it.\n // Note: this creates issues with `window.fetch` polyfills and\n // overrides; see:\n // https://github.com/localForage/localForage/issues/856\n return (!isSafari || hasFetch) && typeof indexedDB !== 'undefined' &&\n // some outdated implementations of IDB that appear on Samsung\n // and HTC Android devices <4.4 are missing IDBKeyRange\n // See: https://github.com/mozilla/localForage/issues/128\n // See: https://github.com/mozilla/localForage/issues/272\n typeof IDBKeyRange !== 'undefined';\n } catch (e) {\n return false;\n }\n}\n\n// Abstracts constructing a Blob object, so it also works in older\n// browsers that don't support the native Blob constructor. (i.e.\n// old QtWebKit versions, at least).\n// Abstracts constructing a Blob object, so it also works in older\n// browsers that don't support the native Blob constructor. (i.e.\n// old QtWebKit versions, at least).\nfunction createBlob(parts, properties) {\n /* global BlobBuilder,MSBlobBuilder,MozBlobBuilder,WebKitBlobBuilder */\n parts = parts || [];\n properties = properties || {};\n try {\n return new Blob(parts, properties);\n } catch (e) {\n if (e.name !== 'TypeError') {\n throw e;\n }\n var Builder = typeof BlobBuilder !== 'undefined' ? BlobBuilder : typeof MSBlobBuilder !== 'undefined' ? MSBlobBuilder : typeof MozBlobBuilder !== 'undefined' ? MozBlobBuilder : WebKitBlobBuilder;\n var builder = new Builder();\n for (var i = 0; i < parts.length; i += 1) {\n builder.append(parts[i]);\n }\n return builder.getBlob(properties.type);\n }\n}\n\n// This is CommonJS because lie is an external dependency, so Rollup\n// can just ignore it.\nif (typeof Promise === 'undefined') {\n // In the \"nopromises\" build this will just throw if you don't have\n // a global promise object, but it would throw anyway later.\n _dereq_(3);\n}\nvar Promise$1 = Promise;\n\nfunction executeCallback(promise, callback) {\n if (callback) {\n promise.then(function (result) {\n callback(null, result);\n }, function (error) {\n callback(error);\n });\n }\n}\n\nfunction executeTwoCallbacks(promise, callback, errorCallback) {\n if (typeof callback === 'function') {\n promise.then(callback);\n }\n\n if (typeof errorCallback === 'function') {\n promise[\"catch\"](errorCallback);\n }\n}\n\nfunction normalizeKey(key) {\n // Cast the key to a string, as that's all we can set as a key.\n if (typeof key !== 'string') {\n console.warn(key + ' used as a key, but it is not a string.');\n key = String(key);\n }\n\n return key;\n}\n\nfunction getCallback() {\n if (arguments.length && typeof arguments[arguments.length - 1] === 'function') {\n return arguments[arguments.length - 1];\n }\n}\n\n// Some code originally from async_storage.js in\n// [Gaia](https://github.com/mozilla-b2g/gaia).\n\nvar DETECT_BLOB_SUPPORT_STORE = 'local-forage-detect-blob-support';\nvar supportsBlobs = void 0;\nvar dbContexts = {};\nvar toString = Object.prototype.toString;\n\n// Transaction Modes\nvar READ_ONLY = 'readonly';\nvar READ_WRITE = 'readwrite';\n\n// Transform a binary string to an array buffer, because otherwise\n// weird stuff happens when you try to work with the binary string directly.\n// It is known.\n// From http://stackoverflow.com/questions/14967647/ (continues on next line)\n// encode-decode-image-with-base64-breaks-image (2013-04-21)\nfunction _binStringToArrayBuffer(bin) {\n var length = bin.length;\n var buf = new ArrayBuffer(length);\n var arr = new Uint8Array(buf);\n for (var i = 0; i < length; i++) {\n arr[i] = bin.charCodeAt(i);\n }\n return buf;\n}\n\n//\n// Blobs are not supported in all versions of IndexedDB, notably\n// Chrome <37 and Android <5. In those versions, storing a blob will throw.\n//\n// Various other blob bugs exist in Chrome v37-42 (inclusive).\n// Detecting them is expensive and confusing to users, and Chrome 37-42\n// is at very low usage worldwide, so we do a hacky userAgent check instead.\n//\n// content-type bug: https://code.google.com/p/chromium/issues/detail?id=408120\n// 404 bug: https://code.google.com/p/chromium/issues/detail?id=447916\n// FileReader bug: https://code.google.com/p/chromium/issues/detail?id=447836\n//\n// Code borrowed from PouchDB. See:\n// https://github.com/pouchdb/pouchdb/blob/master/packages/node_modules/pouchdb-adapter-idb/src/blobSupport.js\n//\nfunction _checkBlobSupportWithoutCaching(idb) {\n return new Promise$1(function (resolve) {\n var txn = idb.transaction(DETECT_BLOB_SUPPORT_STORE, READ_WRITE);\n var blob = createBlob(['']);\n txn.objectStore(DETECT_BLOB_SUPPORT_STORE).put(blob, 'key');\n\n txn.onabort = function (e) {\n // If the transaction aborts now its due to not being able to\n // write to the database, likely due to the disk being full\n e.preventDefault();\n e.stopPropagation();\n resolve(false);\n };\n\n txn.oncomplete = function () {\n var matchedChrome = navigator.userAgent.match(/Chrome\\/(\\d+)/);\n var matchedEdge = navigator.userAgent.match(/Edge\\//);\n // MS Edge pretends to be Chrome 42:\n // https://msdn.microsoft.com/en-us/library/hh869301%28v=vs.85%29.aspx\n resolve(matchedEdge || !matchedChrome || parseInt(matchedChrome[1], 10) >= 43);\n };\n })[\"catch\"](function () {\n return false; // error, so assume unsupported\n });\n}\n\nfunction _checkBlobSupport(idb) {\n if (typeof supportsBlobs === 'boolean') {\n return Promise$1.resolve(supportsBlobs);\n }\n return _checkBlobSupportWithoutCaching(idb).then(function (value) {\n supportsBlobs = value;\n return supportsBlobs;\n });\n}\n\nfunction _deferReadiness(dbInfo) {\n var dbContext = dbContexts[dbInfo.name];\n\n // Create a deferred object representing the current database operation.\n var deferredOperation = {};\n\n deferredOperation.promise = new Promise$1(function (resolve, reject) {\n deferredOperation.resolve = resolve;\n deferredOperation.reject = reject;\n });\n\n // Enqueue the deferred operation.\n dbContext.deferredOperations.push(deferredOperation);\n\n // Chain its promise to the database readiness.\n if (!dbContext.dbReady) {\n dbContext.dbReady = deferredOperation.promise;\n } else {\n dbContext.dbReady = dbContext.dbReady.then(function () {\n return deferredOperation.promise;\n });\n }\n}\n\nfunction _advanceReadiness(dbInfo) {\n var dbContext = dbContexts[dbInfo.name];\n\n // Dequeue a deferred operation.\n var deferredOperation = dbContext.deferredOperations.pop();\n\n // Resolve its promise (which is part of the database readiness\n // chain of promises).\n if (deferredOperation) {\n deferredOperation.resolve();\n return deferredOperation.promise;\n }\n}\n\nfunction _rejectReadiness(dbInfo, err) {\n var dbContext = dbContexts[dbInfo.name];\n\n // Dequeue a deferred operation.\n var deferredOperation = dbContext.deferredOperations.pop();\n\n // Reject its promise (which is part of the database readiness\n // chain of promises).\n if (deferredOperation) {\n deferredOperation.reject(err);\n return deferredOperation.promise;\n }\n}\n\nfunction _getConnection(dbInfo, upgradeNeeded) {\n return new Promise$1(function (resolve, reject) {\n dbContexts[dbInfo.name] = dbContexts[dbInfo.name] || createDbContext();\n\n if (dbInfo.db) {\n if (upgradeNeeded) {\n _deferReadiness(dbInfo);\n dbInfo.db.close();\n } else {\n return resolve(dbInfo.db);\n }\n }\n\n var dbArgs = [dbInfo.name];\n\n if (upgradeNeeded) {\n dbArgs.push(dbInfo.version);\n }\n\n var openreq = idb.open.apply(idb, dbArgs);\n\n if (upgradeNeeded) {\n openreq.onupgradeneeded = function (e) {\n var db = openreq.result;\n try {\n db.createObjectStore(dbInfo.storeName);\n if (e.oldVersion <= 1) {\n // Added when support for blob shims was added\n db.createObjectStore(DETECT_BLOB_SUPPORT_STORE);\n }\n } catch (ex) {\n if (ex.name === 'ConstraintError') {\n console.warn('The database \"' + dbInfo.name + '\"' + ' has been upgraded from version ' + e.oldVersion + ' to version ' + e.newVersion + ', but the storage \"' + dbInfo.storeName + '\" already exists.');\n } else {\n throw ex;\n }\n }\n };\n }\n\n openreq.onerror = function (e) {\n e.preventDefault();\n reject(openreq.error);\n };\n\n openreq.onsuccess = function () {\n var db = openreq.result;\n db.onversionchange = function (e) {\n // Triggered when the database is modified (e.g. adding an objectStore) or\n // deleted (even when initiated by other sessions in different tabs).\n // Closing the connection here prevents those operations from being blocked.\n // If the database is accessed again later by this instance, the connection\n // will be reopened or the database recreated as needed.\n e.target.close();\n };\n resolve(db);\n _advanceReadiness(dbInfo);\n };\n });\n}\n\nfunction _getOriginalConnection(dbInfo) {\n return _getConnection(dbInfo, false);\n}\n\nfunction _getUpgradedConnection(dbInfo) {\n return _getConnection(dbInfo, true);\n}\n\nfunction _isUpgradeNeeded(dbInfo, defaultVersion) {\n if (!dbInfo.db) {\n return true;\n }\n\n var isNewStore = !dbInfo.db.objectStoreNames.contains(dbInfo.storeName);\n var isDowngrade = dbInfo.version < dbInfo.db.version;\n var isUpgrade = dbInfo.version > dbInfo.db.version;\n\n if (isDowngrade) {\n // If the version is not the default one\n // then warn for impossible downgrade.\n if (dbInfo.version !== defaultVersion) {\n console.warn('The database \"' + dbInfo.name + '\"' + \" can't be downgraded from version \" + dbInfo.db.version + ' to version ' + dbInfo.version + '.');\n }\n // Align the versions to prevent errors.\n dbInfo.version = dbInfo.db.version;\n }\n\n if (isUpgrade || isNewStore) {\n // If the store is new then increment the version (if needed).\n // This will trigger an \"upgradeneeded\" event which is required\n // for creating a store.\n if (isNewStore) {\n var incVersion = dbInfo.db.version + 1;\n if (incVersion > dbInfo.version) {\n dbInfo.version = incVersion;\n }\n }\n\n return true;\n }\n\n return false;\n}\n\n// encode a blob for indexeddb engines that don't support blobs\nfunction _encodeBlob(blob) {\n return new Promise$1(function (resolve, reject) {\n var reader = new FileReader();\n reader.onerror = reject;\n reader.onloadend = function (e) {\n var base64 = btoa(e.target.result || '');\n resolve({\n __local_forage_encoded_blob: true,\n data: base64,\n type: blob.type\n });\n };\n reader.readAsBinaryString(blob);\n });\n}\n\n// decode an encoded blob\nfunction _decodeBlob(encodedBlob) {\n var arrayBuff = _binStringToArrayBuffer(atob(encodedBlob.data));\n return createBlob([arrayBuff], { type: encodedBlob.type });\n}\n\n// is this one of our fancy encoded blobs?\nfunction _isEncodedBlob(value) {\n return value && value.__local_forage_encoded_blob;\n}\n\n// Specialize the default `ready()` function by making it dependent\n// on the current database operations. Thus, the driver will be actually\n// ready when it's been initialized (default) *and* there are no pending\n// operations on the database (initiated by some other instances).\nfunction _fullyReady(callback) {\n var self = this;\n\n var promise = self._initReady().then(function () {\n var dbContext = dbContexts[self._dbInfo.name];\n\n if (dbContext && dbContext.dbReady) {\n return dbContext.dbReady;\n }\n });\n\n executeTwoCallbacks(promise, callback, callback);\n return promise;\n}\n\n// Try to establish a new db connection to replace the\n// current one which is broken (i.e. experiencing\n// InvalidStateError while creating a transaction).\nfunction _tryReconnect(dbInfo) {\n _deferReadiness(dbInfo);\n\n var dbContext = dbContexts[dbInfo.name];\n var forages = dbContext.forages;\n\n for (var i = 0; i < forages.length; i++) {\n var forage = forages[i];\n if (forage._dbInfo.db) {\n forage._dbInfo.db.close();\n forage._dbInfo.db = null;\n }\n }\n dbInfo.db = null;\n\n return _getOriginalConnection(dbInfo).then(function (db) {\n dbInfo.db = db;\n if (_isUpgradeNeeded(dbInfo)) {\n // Reopen the database for upgrading.\n return _getUpgradedConnection(dbInfo);\n }\n return db;\n }).then(function (db) {\n // store the latest db reference\n // in case the db was upgraded\n dbInfo.db = dbContext.db = db;\n for (var i = 0; i < forages.length; i++) {\n forages[i]._dbInfo.db = db;\n }\n })[\"catch\"](function (err) {\n _rejectReadiness(dbInfo, err);\n throw err;\n });\n}\n\n// FF doesn't like Promises (micro-tasks) and IDDB store operations,\n// so we have to do it with callbacks\nfunction createTransaction(dbInfo, mode, callback, retries) {\n if (retries === undefined) {\n retries = 1;\n }\n\n try {\n var tx = dbInfo.db.transaction(dbInfo.storeName, mode);\n callback(null, tx);\n } catch (err) {\n if (retries > 0 && (!dbInfo.db || err.name === 'InvalidStateError' || err.name === 'NotFoundError')) {\n return Promise$1.resolve().then(function () {\n if (!dbInfo.db || err.name === 'NotFoundError' && !dbInfo.db.objectStoreNames.contains(dbInfo.storeName) && dbInfo.version <= dbInfo.db.version) {\n // increase the db version, to create the new ObjectStore\n if (dbInfo.db) {\n dbInfo.version = dbInfo.db.version + 1;\n }\n // Reopen the database for upgrading.\n return _getUpgradedConnection(dbInfo);\n }\n }).then(function () {\n return _tryReconnect(dbInfo).then(function () {\n createTransaction(dbInfo, mode, callback, retries - 1);\n });\n })[\"catch\"](callback);\n }\n\n callback(err);\n }\n}\n\nfunction createDbContext() {\n return {\n // Running localForages sharing a database.\n forages: [],\n // Shared database.\n db: null,\n // Database readiness (promise).\n dbReady: null,\n // Deferred operations on the database.\n deferredOperations: []\n };\n}\n\n// Open the IndexedDB database (automatically creates one if one didn't\n// previously exist), using any options set in the config.\nfunction _initStorage(options) {\n var self = this;\n var dbInfo = {\n db: null\n };\n\n if (options) {\n for (var i in options) {\n dbInfo[i] = options[i];\n }\n }\n\n // Get the current context of the database;\n var dbContext = dbContexts[dbInfo.name];\n\n // ...or create a new context.\n if (!dbContext) {\n dbContext = createDbContext();\n // Register the new context in the global container.\n dbContexts[dbInfo.name] = dbContext;\n }\n\n // Register itself as a running localForage in the current context.\n dbContext.forages.push(self);\n\n // Replace the default `ready()` function with the specialized one.\n if (!self._initReady) {\n self._initReady = self.ready;\n self.ready = _fullyReady;\n }\n\n // Create an array of initialization states of the related localForages.\n var initPromises = [];\n\n function ignoreErrors() {\n // Don't handle errors here,\n // just makes sure related localForages aren't pending.\n return Promise$1.resolve();\n }\n\n for (var j = 0; j < dbContext.forages.length; j++) {\n var forage = dbContext.forages[j];\n if (forage !== self) {\n // Don't wait for itself...\n initPromises.push(forage._initReady()[\"catch\"](ignoreErrors));\n }\n }\n\n // Take a snapshot of the related localForages.\n var forages = dbContext.forages.slice(0);\n\n // Initialize the connection process only when\n // all the related localForages aren't pending.\n return Promise$1.all(initPromises).then(function () {\n dbInfo.db = dbContext.db;\n // Get the connection or open a new one without upgrade.\n return _getOriginalConnection(dbInfo);\n }).then(function (db) {\n dbInfo.db = db;\n if (_isUpgradeNeeded(dbInfo, self._defaultConfig.version)) {\n // Reopen the database for upgrading.\n return _getUpgradedConnection(dbInfo);\n }\n return db;\n }).then(function (db) {\n dbInfo.db = dbContext.db = db;\n self._dbInfo = dbInfo;\n // Share the final connection amongst related localForages.\n for (var k = 0; k < forages.length; k++) {\n var forage = forages[k];\n if (forage !== self) {\n // Self is already up-to-date.\n forage._dbInfo.db = dbInfo.db;\n forage._dbInfo.version = dbInfo.version;\n }\n }\n });\n}\n\nfunction getItem(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var req = store.get(key);\n\n req.onsuccess = function () {\n var value = req.result;\n if (value === undefined) {\n value = null;\n }\n if (_isEncodedBlob(value)) {\n value = _decodeBlob(value);\n }\n resolve(value);\n };\n\n req.onerror = function () {\n reject(req.error);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Iterate over all items stored in database.\nfunction iterate(iterator, callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var req = store.openCursor();\n var iterationNumber = 1;\n\n req.onsuccess = function () {\n var cursor = req.result;\n\n if (cursor) {\n var value = cursor.value;\n if (_isEncodedBlob(value)) {\n value = _decodeBlob(value);\n }\n var result = iterator(value, cursor.key, iterationNumber++);\n\n // when the iterator callback returns any\n // (non-`undefined`) value, then we stop\n // the iteration immediately\n if (result !== void 0) {\n resolve(result);\n } else {\n cursor[\"continue\"]();\n }\n } else {\n resolve();\n }\n };\n\n req.onerror = function () {\n reject(req.error);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n\n return promise;\n}\n\nfunction setItem(key, value, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n var dbInfo;\n self.ready().then(function () {\n dbInfo = self._dbInfo;\n if (toString.call(value) === '[object Blob]') {\n return _checkBlobSupport(dbInfo.db).then(function (blobSupport) {\n if (blobSupport) {\n return value;\n }\n return _encodeBlob(value);\n });\n }\n return value;\n }).then(function (value) {\n createTransaction(self._dbInfo, READ_WRITE, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n\n // The reason we don't _save_ null is because IE 10 does\n // not support saving the `null` type in IndexedDB. How\n // ironic, given the bug below!\n // See: https://github.com/mozilla/localForage/issues/161\n if (value === null) {\n value = undefined;\n }\n\n var req = store.put(value, key);\n\n transaction.oncomplete = function () {\n // Cast to undefined so the value passed to\n // callback/promise is the same as what one would get out\n // of `getItem()` later. This leads to some weirdness\n // (setItem('foo', undefined) will return `null`), but\n // it's not my fault localStorage is our baseline and that\n // it's weird.\n if (value === undefined) {\n value = null;\n }\n\n resolve(value);\n };\n transaction.onabort = transaction.onerror = function () {\n var err = req.error ? req.error : req.transaction.error;\n reject(err);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction removeItem(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_WRITE, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n // We use a Grunt task to make this safe for IE and some\n // versions of Android (including those used by Cordova).\n // Normally IE won't like `.delete()` and will insist on\n // using `['delete']()`, but we have a build step that\n // fixes this for us now.\n var req = store[\"delete\"](key);\n transaction.oncomplete = function () {\n resolve();\n };\n\n transaction.onerror = function () {\n reject(req.error);\n };\n\n // The request will be also be aborted if we've exceeded our storage\n // space.\n transaction.onabort = function () {\n var err = req.error ? req.error : req.transaction.error;\n reject(err);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction clear(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_WRITE, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var req = store.clear();\n\n transaction.oncomplete = function () {\n resolve();\n };\n\n transaction.onabort = transaction.onerror = function () {\n var err = req.error ? req.error : req.transaction.error;\n reject(err);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction length(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var req = store.count();\n\n req.onsuccess = function () {\n resolve(req.result);\n };\n\n req.onerror = function () {\n reject(req.error);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction key(n, callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n if (n < 0) {\n resolve(null);\n\n return;\n }\n\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var advanced = false;\n var req = store.openKeyCursor();\n\n req.onsuccess = function () {\n var cursor = req.result;\n if (!cursor) {\n // this means there weren't enough keys\n resolve(null);\n\n return;\n }\n\n if (n === 0) {\n // We have the first key, return it if that's what they\n // wanted.\n resolve(cursor.key);\n } else {\n if (!advanced) {\n // Otherwise, ask the cursor to skip ahead n\n // records.\n advanced = true;\n cursor.advance(n);\n } else {\n // When we get here, we've got the nth key.\n resolve(cursor.key);\n }\n }\n };\n\n req.onerror = function () {\n reject(req.error);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction keys(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var req = store.openKeyCursor();\n var keys = [];\n\n req.onsuccess = function () {\n var cursor = req.result;\n\n if (!cursor) {\n resolve(keys);\n return;\n }\n\n keys.push(cursor.key);\n cursor[\"continue\"]();\n };\n\n req.onerror = function () {\n reject(req.error);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction dropInstance(options, callback) {\n callback = getCallback.apply(this, arguments);\n\n var currentConfig = this.config();\n options = typeof options !== 'function' && options || {};\n if (!options.name) {\n options.name = options.name || currentConfig.name;\n options.storeName = options.storeName || currentConfig.storeName;\n }\n\n var self = this;\n var promise;\n if (!options.name) {\n promise = Promise$1.reject('Invalid arguments');\n } else {\n var isCurrentDb = options.name === currentConfig.name && self._dbInfo.db;\n\n var dbPromise = isCurrentDb ? Promise$1.resolve(self._dbInfo.db) : _getOriginalConnection(options).then(function (db) {\n var dbContext = dbContexts[options.name];\n var forages = dbContext.forages;\n dbContext.db = db;\n for (var i = 0; i < forages.length; i++) {\n forages[i]._dbInfo.db = db;\n }\n return db;\n });\n\n if (!options.storeName) {\n promise = dbPromise.then(function (db) {\n _deferReadiness(options);\n\n var dbContext = dbContexts[options.name];\n var forages = dbContext.forages;\n\n db.close();\n for (var i = 0; i < forages.length; i++) {\n var forage = forages[i];\n forage._dbInfo.db = null;\n }\n\n var dropDBPromise = new Promise$1(function (resolve, reject) {\n var req = idb.deleteDatabase(options.name);\n\n req.onerror = function () {\n var db = req.result;\n if (db) {\n db.close();\n }\n reject(req.error);\n };\n\n req.onblocked = function () {\n // Closing all open connections in onversionchange handler should prevent this situation, but if\n // we do get here, it just means the request remains pending - eventually it will succeed or error\n console.warn('dropInstance blocked for database \"' + options.name + '\" until all open connections are closed');\n };\n\n req.onsuccess = function () {\n var db = req.result;\n if (db) {\n db.close();\n }\n resolve(db);\n };\n });\n\n return dropDBPromise.then(function (db) {\n dbContext.db = db;\n for (var i = 0; i < forages.length; i++) {\n var _forage = forages[i];\n _advanceReadiness(_forage._dbInfo);\n }\n })[\"catch\"](function (err) {\n (_rejectReadiness(options, err) || Promise$1.resolve())[\"catch\"](function () {});\n throw err;\n });\n });\n } else {\n promise = dbPromise.then(function (db) {\n if (!db.objectStoreNames.contains(options.storeName)) {\n return;\n }\n\n var newVersion = db.version + 1;\n\n _deferReadiness(options);\n\n var dbContext = dbContexts[options.name];\n var forages = dbContext.forages;\n\n db.close();\n for (var i = 0; i < forages.length; i++) {\n var forage = forages[i];\n forage._dbInfo.db = null;\n forage._dbInfo.version = newVersion;\n }\n\n var dropObjectPromise = new Promise$1(function (resolve, reject) {\n var req = idb.open(options.name, newVersion);\n\n req.onerror = function (err) {\n var db = req.result;\n db.close();\n reject(err);\n };\n\n req.onupgradeneeded = function () {\n var db = req.result;\n db.deleteObjectStore(options.storeName);\n };\n\n req.onsuccess = function () {\n var db = req.result;\n db.close();\n resolve(db);\n };\n });\n\n return dropObjectPromise.then(function (db) {\n dbContext.db = db;\n for (var j = 0; j < forages.length; j++) {\n var _forage2 = forages[j];\n _forage2._dbInfo.db = db;\n _advanceReadiness(_forage2._dbInfo);\n }\n })[\"catch\"](function (err) {\n (_rejectReadiness(options, err) || Promise$1.resolve())[\"catch\"](function () {});\n throw err;\n });\n });\n }\n }\n\n executeCallback(promise, callback);\n return promise;\n}\n\nvar asyncStorage = {\n _driver: 'asyncStorage',\n _initStorage: _initStorage,\n _support: isIndexedDBValid(),\n iterate: iterate,\n getItem: getItem,\n setItem: setItem,\n removeItem: removeItem,\n clear: clear,\n length: length,\n key: key,\n keys: keys,\n dropInstance: dropInstance\n};\n\nfunction isWebSQLValid() {\n return typeof openDatabase === 'function';\n}\n\n// Sadly, the best way to save binary data in WebSQL/localStorage is serializing\n// it to Base64, so this is how we store it to prevent very strange errors with less\n// verbose ways of binary <-> string data storage.\nvar BASE_CHARS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\nvar BLOB_TYPE_PREFIX = '~~local_forage_type~';\nvar BLOB_TYPE_PREFIX_REGEX = /^~~local_forage_type~([^~]+)~/;\n\nvar SERIALIZED_MARKER = '__lfsc__:';\nvar SERIALIZED_MARKER_LENGTH = SERIALIZED_MARKER.length;\n\n// OMG the serializations!\nvar TYPE_ARRAYBUFFER = 'arbf';\nvar TYPE_BLOB = 'blob';\nvar TYPE_INT8ARRAY = 'si08';\nvar TYPE_UINT8ARRAY = 'ui08';\nvar TYPE_UINT8CLAMPEDARRAY = 'uic8';\nvar TYPE_INT16ARRAY = 'si16';\nvar TYPE_INT32ARRAY = 'si32';\nvar TYPE_UINT16ARRAY = 'ur16';\nvar TYPE_UINT32ARRAY = 'ui32';\nvar TYPE_FLOAT32ARRAY = 'fl32';\nvar TYPE_FLOAT64ARRAY = 'fl64';\nvar TYPE_SERIALIZED_MARKER_LENGTH = SERIALIZED_MARKER_LENGTH + TYPE_ARRAYBUFFER.length;\n\nvar toString$1 = Object.prototype.toString;\n\nfunction stringToBuffer(serializedString) {\n // Fill the string into a ArrayBuffer.\n var bufferLength = serializedString.length * 0.75;\n var len = serializedString.length;\n var i;\n var p = 0;\n var encoded1, encoded2, encoded3, encoded4;\n\n if (serializedString[serializedString.length - 1] === '=') {\n bufferLength--;\n if (serializedString[serializedString.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n var buffer = new ArrayBuffer(bufferLength);\n var bytes = new Uint8Array(buffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = BASE_CHARS.indexOf(serializedString[i]);\n encoded2 = BASE_CHARS.indexOf(serializedString[i + 1]);\n encoded3 = BASE_CHARS.indexOf(serializedString[i + 2]);\n encoded4 = BASE_CHARS.indexOf(serializedString[i + 3]);\n\n /*jslint bitwise: true */\n bytes[p++] = encoded1 << 2 | encoded2 >> 4;\n bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2;\n bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63;\n }\n return buffer;\n}\n\n// Converts a buffer to a string to store, serialized, in the backend\n// storage library.\nfunction bufferToString(buffer) {\n // base64-arraybuffer\n var bytes = new Uint8Array(buffer);\n var base64String = '';\n var i;\n\n for (i = 0; i < bytes.length; i += 3) {\n /*jslint bitwise: true */\n base64String += BASE_CHARS[bytes[i] >> 2];\n base64String += BASE_CHARS[(bytes[i] & 3) << 4 | bytes[i + 1] >> 4];\n base64String += BASE_CHARS[(bytes[i + 1] & 15) << 2 | bytes[i + 2] >> 6];\n base64String += BASE_CHARS[bytes[i + 2] & 63];\n }\n\n if (bytes.length % 3 === 2) {\n base64String = base64String.substring(0, base64String.length - 1) + '=';\n } else if (bytes.length % 3 === 1) {\n base64String = base64String.substring(0, base64String.length - 2) + '==';\n }\n\n return base64String;\n}\n\n// Serialize a value, afterwards executing a callback (which usually\n// instructs the `setItem()` callback/promise to be executed). This is how\n// we store binary data with localStorage.\nfunction serialize(value, callback) {\n var valueType = '';\n if (value) {\n valueType = toString$1.call(value);\n }\n\n // Cannot use `value instanceof ArrayBuffer` or such here, as these\n // checks fail when running the tests using casper.js...\n //\n // TODO: See why those tests fail and use a better solution.\n if (value && (valueType === '[object ArrayBuffer]' || value.buffer && toString$1.call(value.buffer) === '[object ArrayBuffer]')) {\n // Convert binary arrays to a string and prefix the string with\n // a special marker.\n var buffer;\n var marker = SERIALIZED_MARKER;\n\n if (value instanceof ArrayBuffer) {\n buffer = value;\n marker += TYPE_ARRAYBUFFER;\n } else {\n buffer = value.buffer;\n\n if (valueType === '[object Int8Array]') {\n marker += TYPE_INT8ARRAY;\n } else if (valueType === '[object Uint8Array]') {\n marker += TYPE_UINT8ARRAY;\n } else if (valueType === '[object Uint8ClampedArray]') {\n marker += TYPE_UINT8CLAMPEDARRAY;\n } else if (valueType === '[object Int16Array]') {\n marker += TYPE_INT16ARRAY;\n } else if (valueType === '[object Uint16Array]') {\n marker += TYPE_UINT16ARRAY;\n } else if (valueType === '[object Int32Array]') {\n marker += TYPE_INT32ARRAY;\n } else if (valueType === '[object Uint32Array]') {\n marker += TYPE_UINT32ARRAY;\n } else if (valueType === '[object Float32Array]') {\n marker += TYPE_FLOAT32ARRAY;\n } else if (valueType === '[object Float64Array]') {\n marker += TYPE_FLOAT64ARRAY;\n } else {\n callback(new Error('Failed to get type for BinaryArray'));\n }\n }\n\n callback(marker + bufferToString(buffer));\n } else if (valueType === '[object Blob]') {\n // Conver the blob to a binaryArray and then to a string.\n var fileReader = new FileReader();\n\n fileReader.onload = function () {\n // Backwards-compatible prefix for the blob type.\n var str = BLOB_TYPE_PREFIX + value.type + '~' + bufferToString(this.result);\n\n callback(SERIALIZED_MARKER + TYPE_BLOB + str);\n };\n\n fileReader.readAsArrayBuffer(value);\n } else {\n try {\n callback(JSON.stringify(value));\n } catch (e) {\n console.error(\"Couldn't convert value into a JSON string: \", value);\n\n callback(null, e);\n }\n }\n}\n\n// Deserialize data we've inserted into a value column/field. We place\n// special markers into our strings to mark them as encoded; this isn't\n// as nice as a meta field, but it's the only sane thing we can do whilst\n// keeping localStorage support intact.\n//\n// Oftentimes this will just deserialize JSON content, but if we have a\n// special marker (SERIALIZED_MARKER, defined above), we will extract\n// some kind of arraybuffer/binary data/typed array out of the string.\nfunction deserialize(value) {\n // If we haven't marked this string as being specially serialized (i.e.\n // something other than serialized JSON), we can just return it and be\n // done with it.\n if (value.substring(0, SERIALIZED_MARKER_LENGTH) !== SERIALIZED_MARKER) {\n return JSON.parse(value);\n }\n\n // The following code deals with deserializing some kind of Blob or\n // TypedArray. First we separate out the type of data we're dealing\n // with from the data itself.\n var serializedString = value.substring(TYPE_SERIALIZED_MARKER_LENGTH);\n var type = value.substring(SERIALIZED_MARKER_LENGTH, TYPE_SERIALIZED_MARKER_LENGTH);\n\n var blobType;\n // Backwards-compatible blob type serialization strategy.\n // DBs created with older versions of localForage will simply not have the blob type.\n if (type === TYPE_BLOB && BLOB_TYPE_PREFIX_REGEX.test(serializedString)) {\n var matcher = serializedString.match(BLOB_TYPE_PREFIX_REGEX);\n blobType = matcher[1];\n serializedString = serializedString.substring(matcher[0].length);\n }\n var buffer = stringToBuffer(serializedString);\n\n // Return the right type based on the code/type set during\n // serialization.\n switch (type) {\n case TYPE_ARRAYBUFFER:\n return buffer;\n case TYPE_BLOB:\n return createBlob([buffer], { type: blobType });\n case TYPE_INT8ARRAY:\n return new Int8Array(buffer);\n case TYPE_UINT8ARRAY:\n return new Uint8Array(buffer);\n case TYPE_UINT8CLAMPEDARRAY:\n return new Uint8ClampedArray(buffer);\n case TYPE_INT16ARRAY:\n return new Int16Array(buffer);\n case TYPE_UINT16ARRAY:\n return new Uint16Array(buffer);\n case TYPE_INT32ARRAY:\n return new Int32Array(buffer);\n case TYPE_UINT32ARRAY:\n return new Uint32Array(buffer);\n case TYPE_FLOAT32ARRAY:\n return new Float32Array(buffer);\n case TYPE_FLOAT64ARRAY:\n return new Float64Array(buffer);\n default:\n throw new Error('Unkown type: ' + type);\n }\n}\n\nvar localforageSerializer = {\n serialize: serialize,\n deserialize: deserialize,\n stringToBuffer: stringToBuffer,\n bufferToString: bufferToString\n};\n\n/*\n * Includes code from:\n *\n * base64-arraybuffer\n * https://github.com/niklasvh/base64-arraybuffer\n *\n * Copyright (c) 2012 Niklas von Hertzen\n * Licensed under the MIT license.\n */\n\nfunction createDbTable(t, dbInfo, callback, errorCallback) {\n t.executeSql('CREATE TABLE IF NOT EXISTS ' + dbInfo.storeName + ' ' + '(id INTEGER PRIMARY KEY, key unique, value)', [], callback, errorCallback);\n}\n\n// Open the WebSQL database (automatically creates one if one didn't\n// previously exist), using any options set in the config.\nfunction _initStorage$1(options) {\n var self = this;\n var dbInfo = {\n db: null\n };\n\n if (options) {\n for (var i in options) {\n dbInfo[i] = typeof options[i] !== 'string' ? options[i].toString() : options[i];\n }\n }\n\n var dbInfoPromise = new Promise$1(function (resolve, reject) {\n // Open the database; the openDatabase API will automatically\n // create it for us if it doesn't exist.\n try {\n dbInfo.db = openDatabase(dbInfo.name, String(dbInfo.version), dbInfo.description, dbInfo.size);\n } catch (e) {\n return reject(e);\n }\n\n // Create our key/value table if it doesn't exist.\n dbInfo.db.transaction(function (t) {\n createDbTable(t, dbInfo, function () {\n self._dbInfo = dbInfo;\n resolve();\n }, function (t, error) {\n reject(error);\n });\n }, reject);\n });\n\n dbInfo.serializer = localforageSerializer;\n return dbInfoPromise;\n}\n\nfunction tryExecuteSql(t, dbInfo, sqlStatement, args, callback, errorCallback) {\n t.executeSql(sqlStatement, args, callback, function (t, error) {\n if (error.code === error.SYNTAX_ERR) {\n t.executeSql('SELECT name FROM sqlite_master ' + \"WHERE type='table' AND name = ?\", [dbInfo.storeName], function (t, results) {\n if (!results.rows.length) {\n // if the table is missing (was deleted)\n // re-create it table and retry\n createDbTable(t, dbInfo, function () {\n t.executeSql(sqlStatement, args, callback, errorCallback);\n }, errorCallback);\n } else {\n errorCallback(t, error);\n }\n }, errorCallback);\n } else {\n errorCallback(t, error);\n }\n }, errorCallback);\n}\n\nfunction getItem$1(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'SELECT * FROM ' + dbInfo.storeName + ' WHERE key = ? LIMIT 1', [key], function (t, results) {\n var result = results.rows.length ? results.rows.item(0).value : null;\n\n // Check to see if this is serialized content we need to\n // unpack.\n if (result) {\n result = dbInfo.serializer.deserialize(result);\n }\n\n resolve(result);\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction iterate$1(iterator, callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'SELECT * FROM ' + dbInfo.storeName, [], function (t, results) {\n var rows = results.rows;\n var length = rows.length;\n\n for (var i = 0; i < length; i++) {\n var item = rows.item(i);\n var result = item.value;\n\n // Check to see if this is serialized content\n // we need to unpack.\n if (result) {\n result = dbInfo.serializer.deserialize(result);\n }\n\n result = iterator(result, item.key, i + 1);\n\n // void(0) prevents problems with redefinition\n // of `undefined`.\n if (result !== void 0) {\n resolve(result);\n return;\n }\n }\n\n resolve();\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction _setItem(key, value, callback, retriesLeft) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n // The localStorage API doesn't return undefined values in an\n // \"expected\" way, so undefined is always cast to null in all\n // drivers. See: https://github.com/mozilla/localForage/pull/42\n if (value === undefined) {\n value = null;\n }\n\n // Save the original value to pass to the callback.\n var originalValue = value;\n\n var dbInfo = self._dbInfo;\n dbInfo.serializer.serialize(value, function (value, error) {\n if (error) {\n reject(error);\n } else {\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'INSERT OR REPLACE INTO ' + dbInfo.storeName + ' ' + '(key, value) VALUES (?, ?)', [key, value], function () {\n resolve(originalValue);\n }, function (t, error) {\n reject(error);\n });\n }, function (sqlError) {\n // The transaction failed; check\n // to see if it's a quota error.\n if (sqlError.code === sqlError.QUOTA_ERR) {\n // We reject the callback outright for now, but\n // it's worth trying to re-run the transaction.\n // Even if the user accepts the prompt to use\n // more storage on Safari, this error will\n // be called.\n //\n // Try to re-run the transaction.\n if (retriesLeft > 0) {\n resolve(_setItem.apply(self, [key, originalValue, callback, retriesLeft - 1]));\n return;\n }\n reject(sqlError);\n }\n });\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction setItem$1(key, value, callback) {\n return _setItem.apply(this, [key, value, callback, 1]);\n}\n\nfunction removeItem$1(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'DELETE FROM ' + dbInfo.storeName + ' WHERE key = ?', [key], function () {\n resolve();\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Deletes every item in the table.\n// TODO: Find out if this resets the AUTO_INCREMENT number.\nfunction clear$1(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'DELETE FROM ' + dbInfo.storeName, [], function () {\n resolve();\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Does a simple `COUNT(key)` to get the number of items stored in\n// localForage.\nfunction length$1(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n // Ahhh, SQL makes this one soooooo easy.\n tryExecuteSql(t, dbInfo, 'SELECT COUNT(key) as c FROM ' + dbInfo.storeName, [], function (t, results) {\n var result = results.rows.item(0).c;\n resolve(result);\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Return the key located at key index X; essentially gets the key from a\n// `WHERE id = ?`. This is the most efficient way I can think to implement\n// this rarely-used (in my experience) part of the API, but it can seem\n// inconsistent, because we do `INSERT OR REPLACE INTO` on `setItem()`, so\n// the ID of each key will change every time it's updated. Perhaps a stored\n// procedure for the `setItem()` SQL would solve this problem?\n// TODO: Don't change ID on `setItem()`.\nfunction key$1(n, callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'SELECT key FROM ' + dbInfo.storeName + ' WHERE id = ? LIMIT 1', [n + 1], function (t, results) {\n var result = results.rows.length ? results.rows.item(0).key : null;\n resolve(result);\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction keys$1(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'SELECT key FROM ' + dbInfo.storeName, [], function (t, results) {\n var keys = [];\n\n for (var i = 0; i < results.rows.length; i++) {\n keys.push(results.rows.item(i).key);\n }\n\n resolve(keys);\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// https://www.w3.org/TR/webdatabase/#databases\n// > There is no way to enumerate or delete the databases available for an origin from this API.\nfunction getAllStoreNames(db) {\n return new Promise$1(function (resolve, reject) {\n db.transaction(function (t) {\n t.executeSql('SELECT name FROM sqlite_master ' + \"WHERE type='table' AND name <> '__WebKitDatabaseInfoTable__'\", [], function (t, results) {\n var storeNames = [];\n\n for (var i = 0; i < results.rows.length; i++) {\n storeNames.push(results.rows.item(i).name);\n }\n\n resolve({\n db: db,\n storeNames: storeNames\n });\n }, function (t, error) {\n reject(error);\n });\n }, function (sqlError) {\n reject(sqlError);\n });\n });\n}\n\nfunction dropInstance$1(options, callback) {\n callback = getCallback.apply(this, arguments);\n\n var currentConfig = this.config();\n options = typeof options !== 'function' && options || {};\n if (!options.name) {\n options.name = options.name || currentConfig.name;\n options.storeName = options.storeName || currentConfig.storeName;\n }\n\n var self = this;\n var promise;\n if (!options.name) {\n promise = Promise$1.reject('Invalid arguments');\n } else {\n promise = new Promise$1(function (resolve) {\n var db;\n if (options.name === currentConfig.name) {\n // use the db reference of the current instance\n db = self._dbInfo.db;\n } else {\n db = openDatabase(options.name, '', '', 0);\n }\n\n if (!options.storeName) {\n // drop all database tables\n resolve(getAllStoreNames(db));\n } else {\n resolve({\n db: db,\n storeNames: [options.storeName]\n });\n }\n }).then(function (operationInfo) {\n return new Promise$1(function (resolve, reject) {\n operationInfo.db.transaction(function (t) {\n function dropTable(storeName) {\n return new Promise$1(function (resolve, reject) {\n t.executeSql('DROP TABLE IF EXISTS ' + storeName, [], function () {\n resolve();\n }, function (t, error) {\n reject(error);\n });\n });\n }\n\n var operations = [];\n for (var i = 0, len = operationInfo.storeNames.length; i < len; i++) {\n operations.push(dropTable(operationInfo.storeNames[i]));\n }\n\n Promise$1.all(operations).then(function () {\n resolve();\n })[\"catch\"](function (e) {\n reject(e);\n });\n }, function (sqlError) {\n reject(sqlError);\n });\n });\n });\n }\n\n executeCallback(promise, callback);\n return promise;\n}\n\nvar webSQLStorage = {\n _driver: 'webSQLStorage',\n _initStorage: _initStorage$1,\n _support: isWebSQLValid(),\n iterate: iterate$1,\n getItem: getItem$1,\n setItem: setItem$1,\n removeItem: removeItem$1,\n clear: clear$1,\n length: length$1,\n key: key$1,\n keys: keys$1,\n dropInstance: dropInstance$1\n};\n\nfunction isLocalStorageValid() {\n try {\n return typeof localStorage !== 'undefined' && 'setItem' in localStorage &&\n // in IE8 typeof localStorage.setItem === 'object'\n !!localStorage.setItem;\n } catch (e) {\n return false;\n }\n}\n\nfunction _getKeyPrefix(options, defaultConfig) {\n var keyPrefix = options.name + '/';\n\n if (options.storeName !== defaultConfig.storeName) {\n keyPrefix += options.storeName + '/';\n }\n return keyPrefix;\n}\n\n// Check if localStorage throws when saving an item\nfunction checkIfLocalStorageThrows() {\n var localStorageTestKey = '_localforage_support_test';\n\n try {\n localStorage.setItem(localStorageTestKey, true);\n localStorage.removeItem(localStorageTestKey);\n\n return false;\n } catch (e) {\n return true;\n }\n}\n\n// Check if localStorage is usable and allows to save an item\n// This method checks if localStorage is usable in Safari Private Browsing\n// mode, or in any other case where the available quota for localStorage\n// is 0 and there wasn't any saved items yet.\nfunction _isLocalStorageUsable() {\n return !checkIfLocalStorageThrows() || localStorage.length > 0;\n}\n\n// Config the localStorage backend, using options set in the config.\nfunction _initStorage$2(options) {\n var self = this;\n var dbInfo = {};\n if (options) {\n for (var i in options) {\n dbInfo[i] = options[i];\n }\n }\n\n dbInfo.keyPrefix = _getKeyPrefix(options, self._defaultConfig);\n\n if (!_isLocalStorageUsable()) {\n return Promise$1.reject();\n }\n\n self._dbInfo = dbInfo;\n dbInfo.serializer = localforageSerializer;\n\n return Promise$1.resolve();\n}\n\n// Remove all keys from the datastore, effectively destroying all data in\n// the app's key/value store!\nfunction clear$2(callback) {\n var self = this;\n var promise = self.ready().then(function () {\n var keyPrefix = self._dbInfo.keyPrefix;\n\n for (var i = localStorage.length - 1; i >= 0; i--) {\n var key = localStorage.key(i);\n\n if (key.indexOf(keyPrefix) === 0) {\n localStorage.removeItem(key);\n }\n }\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Retrieve an item from the store. Unlike the original async_storage\n// library in Gaia, we don't modify return values at all. If a key's value\n// is `undefined`, we pass that value to the callback function.\nfunction getItem$2(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = self.ready().then(function () {\n var dbInfo = self._dbInfo;\n var result = localStorage.getItem(dbInfo.keyPrefix + key);\n\n // If a result was found, parse it from the serialized\n // string into a JS object. If result isn't truthy, the key\n // is likely undefined and we'll pass it straight to the\n // callback.\n if (result) {\n result = dbInfo.serializer.deserialize(result);\n }\n\n return result;\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Iterate over all items in the store.\nfunction iterate$2(iterator, callback) {\n var self = this;\n\n var promise = self.ready().then(function () {\n var dbInfo = self._dbInfo;\n var keyPrefix = dbInfo.keyPrefix;\n var keyPrefixLength = keyPrefix.length;\n var length = localStorage.length;\n\n // We use a dedicated iterator instead of the `i` variable below\n // so other keys we fetch in localStorage aren't counted in\n // the `iterationNumber` argument passed to the `iterate()`\n // callback.\n //\n // See: github.com/mozilla/localForage/pull/435#discussion_r38061530\n var iterationNumber = 1;\n\n for (var i = 0; i < length; i++) {\n var key = localStorage.key(i);\n if (key.indexOf(keyPrefix) !== 0) {\n continue;\n }\n var value = localStorage.getItem(key);\n\n // If a result was found, parse it from the serialized\n // string into a JS object. If result isn't truthy, the\n // key is likely undefined and we'll pass it straight\n // to the iterator.\n if (value) {\n value = dbInfo.serializer.deserialize(value);\n }\n\n value = iterator(value, key.substring(keyPrefixLength), iterationNumber++);\n\n if (value !== void 0) {\n return value;\n }\n }\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Same as localStorage's key() method, except takes a callback.\nfunction key$2(n, callback) {\n var self = this;\n var promise = self.ready().then(function () {\n var dbInfo = self._dbInfo;\n var result;\n try {\n result = localStorage.key(n);\n } catch (error) {\n result = null;\n }\n\n // Remove the prefix from the key, if a key is found.\n if (result) {\n result = result.substring(dbInfo.keyPrefix.length);\n }\n\n return result;\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction keys$2(callback) {\n var self = this;\n var promise = self.ready().then(function () {\n var dbInfo = self._dbInfo;\n var length = localStorage.length;\n var keys = [];\n\n for (var i = 0; i < length; i++) {\n var itemKey = localStorage.key(i);\n if (itemKey.indexOf(dbInfo.keyPrefix) === 0) {\n keys.push(itemKey.substring(dbInfo.keyPrefix.length));\n }\n }\n\n return keys;\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Supply the number of keys in the datastore to the callback function.\nfunction length$2(callback) {\n var self = this;\n var promise = self.keys().then(function (keys) {\n return keys.length;\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Remove an item from the store, nice and simple.\nfunction removeItem$2(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = self.ready().then(function () {\n var dbInfo = self._dbInfo;\n localStorage.removeItem(dbInfo.keyPrefix + key);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Set a key's value and run an optional callback once the value is set.\n// Unlike Gaia's implementation, the callback function is passed the value,\n// in case you want to operate on that value only after you're sure it\n// saved, or something like that.\nfunction setItem$2(key, value, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = self.ready().then(function () {\n // Convert undefined values to null.\n // https://github.com/mozilla/localForage/pull/42\n if (value === undefined) {\n value = null;\n }\n\n // Save the original value to pass to the callback.\n var originalValue = value;\n\n return new Promise$1(function (resolve, reject) {\n var dbInfo = self._dbInfo;\n dbInfo.serializer.serialize(value, function (value, error) {\n if (error) {\n reject(error);\n } else {\n try {\n localStorage.setItem(dbInfo.keyPrefix + key, value);\n resolve(originalValue);\n } catch (e) {\n // localStorage capacity exceeded.\n // TODO: Make this a specific error/event.\n if (e.name === 'QuotaExceededError' || e.name === 'NS_ERROR_DOM_QUOTA_REACHED') {\n reject(e);\n }\n reject(e);\n }\n }\n });\n });\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction dropInstance$2(options, callback) {\n callback = getCallback.apply(this, arguments);\n\n options = typeof options !== 'function' && options || {};\n if (!options.name) {\n var currentConfig = this.config();\n options.name = options.name || currentConfig.name;\n options.storeName = options.storeName || currentConfig.storeName;\n }\n\n var self = this;\n var promise;\n if (!options.name) {\n promise = Promise$1.reject('Invalid arguments');\n } else {\n promise = new Promise$1(function (resolve) {\n if (!options.storeName) {\n resolve(options.name + '/');\n } else {\n resolve(_getKeyPrefix(options, self._defaultConfig));\n }\n }).then(function (keyPrefix) {\n for (var i = localStorage.length - 1; i >= 0; i--) {\n var key = localStorage.key(i);\n\n if (key.indexOf(keyPrefix) === 0) {\n localStorage.removeItem(key);\n }\n }\n });\n }\n\n executeCallback(promise, callback);\n return promise;\n}\n\nvar localStorageWrapper = {\n _driver: 'localStorageWrapper',\n _initStorage: _initStorage$2,\n _support: isLocalStorageValid(),\n iterate: iterate$2,\n getItem: getItem$2,\n setItem: setItem$2,\n removeItem: removeItem$2,\n clear: clear$2,\n length: length$2,\n key: key$2,\n keys: keys$2,\n dropInstance: dropInstance$2\n};\n\nvar sameValue = function sameValue(x, y) {\n return x === y || typeof x === 'number' && typeof y === 'number' && isNaN(x) && isNaN(y);\n};\n\nvar includes = function includes(array, searchElement) {\n var len = array.length;\n var i = 0;\n while (i < len) {\n if (sameValue(array[i], searchElement)) {\n return true;\n }\n i++;\n }\n\n return false;\n};\n\nvar isArray = Array.isArray || function (arg) {\n return Object.prototype.toString.call(arg) === '[object Array]';\n};\n\n// Drivers are stored here when `defineDriver()` is called.\n// They are shared across all instances of localForage.\nvar DefinedDrivers = {};\n\nvar DriverSupport = {};\n\nvar DefaultDrivers = {\n INDEXEDDB: asyncStorage,\n WEBSQL: webSQLStorage,\n LOCALSTORAGE: localStorageWrapper\n};\n\nvar DefaultDriverOrder = [DefaultDrivers.INDEXEDDB._driver, DefaultDrivers.WEBSQL._driver, DefaultDrivers.LOCALSTORAGE._driver];\n\nvar OptionalDriverMethods = ['dropInstance'];\n\nvar LibraryMethods = ['clear', 'getItem', 'iterate', 'key', 'keys', 'length', 'removeItem', 'setItem'].concat(OptionalDriverMethods);\n\nvar DefaultConfig = {\n description: '',\n driver: DefaultDriverOrder.slice(),\n name: 'localforage',\n // Default DB size is _JUST UNDER_ 5MB, as it's the highest size\n // we can use without a prompt.\n size: 4980736,\n storeName: 'keyvaluepairs',\n version: 1.0\n};\n\nfunction callWhenReady(localForageInstance, libraryMethod) {\n localForageInstance[libraryMethod] = function () {\n var _args = arguments;\n return localForageInstance.ready().then(function () {\n return localForageInstance[libraryMethod].apply(localForageInstance, _args);\n });\n };\n}\n\nfunction extend() {\n for (var i = 1; i < arguments.length; i++) {\n var arg = arguments[i];\n\n if (arg) {\n for (var _key in arg) {\n if (arg.hasOwnProperty(_key)) {\n if (isArray(arg[_key])) {\n arguments[0][_key] = arg[_key].slice();\n } else {\n arguments[0][_key] = arg[_key];\n }\n }\n }\n }\n }\n\n return arguments[0];\n}\n\nvar LocalForage = function () {\n function LocalForage(options) {\n _classCallCheck(this, LocalForage);\n\n for (var driverTypeKey in DefaultDrivers) {\n if (DefaultDrivers.hasOwnProperty(driverTypeKey)) {\n var driver = DefaultDrivers[driverTypeKey];\n var driverName = driver._driver;\n this[driverTypeKey] = driverName;\n\n if (!DefinedDrivers[driverName]) {\n // we don't need to wait for the promise,\n // since the default drivers can be defined\n // in a blocking manner\n this.defineDriver(driver);\n }\n }\n }\n\n this._defaultConfig = extend({}, DefaultConfig);\n this._config = extend({}, this._defaultConfig, options);\n this._driverSet = null;\n this._initDriver = null;\n this._ready = false;\n this._dbInfo = null;\n\n this._wrapLibraryMethodsWithReady();\n this.setDriver(this._config.driver)[\"catch\"](function () {});\n }\n\n // Set any config values for localForage; can be called anytime before\n // the first API call (e.g. `getItem`, `setItem`).\n // We loop through options so we don't overwrite existing config\n // values.\n\n\n LocalForage.prototype.config = function config(options) {\n // If the options argument is an object, we use it to set values.\n // Otherwise, we return either a specified config value or all\n // config values.\n if ((typeof options === 'undefined' ? 'undefined' : _typeof(options)) === 'object') {\n // If localforage is ready and fully initialized, we can't set\n // any new configuration values. Instead, we return an error.\n if (this._ready) {\n return new Error(\"Can't call config() after localforage \" + 'has been used.');\n }\n\n for (var i in options) {\n if (i === 'storeName') {\n options[i] = options[i].replace(/\\W/g, '_');\n }\n\n if (i === 'version' && typeof options[i] !== 'number') {\n return new Error('Database version must be a number.');\n }\n\n this._config[i] = options[i];\n }\n\n // after all config options are set and\n // the driver option is used, try setting it\n if ('driver' in options && options.driver) {\n return this.setDriver(this._config.driver);\n }\n\n return true;\n } else if (typeof options === 'string') {\n return this._config[options];\n } else {\n return this._config;\n }\n };\n\n // Used to define a custom driver, shared across all instances of\n // localForage.\n\n\n LocalForage.prototype.defineDriver = function defineDriver(driverObject, callback, errorCallback) {\n var promise = new Promise$1(function (resolve, reject) {\n try {\n var driverName = driverObject._driver;\n var complianceError = new Error('Custom driver not compliant; see ' + 'https://mozilla.github.io/localForage/#definedriver');\n\n // A driver name should be defined and not overlap with the\n // library-defined, default drivers.\n if (!driverObject._driver) {\n reject(complianceError);\n return;\n }\n\n var driverMethods = LibraryMethods.concat('_initStorage');\n for (var i = 0, len = driverMethods.length; i < len; i++) {\n var driverMethodName = driverMethods[i];\n\n // when the property is there,\n // it should be a method even when optional\n var isRequired = !includes(OptionalDriverMethods, driverMethodName);\n if ((isRequired || driverObject[driverMethodName]) && typeof driverObject[driverMethodName] !== 'function') {\n reject(complianceError);\n return;\n }\n }\n\n var configureMissingMethods = function configureMissingMethods() {\n var methodNotImplementedFactory = function methodNotImplementedFactory(methodName) {\n return function () {\n var error = new Error('Method ' + methodName + ' is not implemented by the current driver');\n var promise = Promise$1.reject(error);\n executeCallback(promise, arguments[arguments.length - 1]);\n return promise;\n };\n };\n\n for (var _i = 0, _len = OptionalDriverMethods.length; _i < _len; _i++) {\n var optionalDriverMethod = OptionalDriverMethods[_i];\n if (!driverObject[optionalDriverMethod]) {\n driverObject[optionalDriverMethod] = methodNotImplementedFactory(optionalDriverMethod);\n }\n }\n };\n\n configureMissingMethods();\n\n var setDriverSupport = function setDriverSupport(support) {\n if (DefinedDrivers[driverName]) {\n console.info('Redefining LocalForage driver: ' + driverName);\n }\n DefinedDrivers[driverName] = driverObject;\n DriverSupport[driverName] = support;\n // don't use a then, so that we can define\n // drivers that have simple _support methods\n // in a blocking manner\n resolve();\n };\n\n if ('_support' in driverObject) {\n if (driverObject._support && typeof driverObject._support === 'function') {\n driverObject._support().then(setDriverSupport, reject);\n } else {\n setDriverSupport(!!driverObject._support);\n }\n } else {\n setDriverSupport(true);\n }\n } catch (e) {\n reject(e);\n }\n });\n\n executeTwoCallbacks(promise, callback, errorCallback);\n return promise;\n };\n\n LocalForage.prototype.driver = function driver() {\n return this._driver || null;\n };\n\n LocalForage.prototype.getDriver = function getDriver(driverName, callback, errorCallback) {\n var getDriverPromise = DefinedDrivers[driverName] ? Promise$1.resolve(DefinedDrivers[driverName]) : Promise$1.reject(new Error('Driver not found.'));\n\n executeTwoCallbacks(getDriverPromise, callback, errorCallback);\n return getDriverPromise;\n };\n\n LocalForage.prototype.getSerializer = function getSerializer(callback) {\n var serializerPromise = Promise$1.resolve(localforageSerializer);\n executeTwoCallbacks(serializerPromise, callback);\n return serializerPromise;\n };\n\n LocalForage.prototype.ready = function ready(callback) {\n var self = this;\n\n var promise = self._driverSet.then(function () {\n if (self._ready === null) {\n self._ready = self._initDriver();\n }\n\n return self._ready;\n });\n\n executeTwoCallbacks(promise, callback, callback);\n return promise;\n };\n\n LocalForage.prototype.setDriver = function setDriver(drivers, callback, errorCallback) {\n var self = this;\n\n if (!isArray(drivers)) {\n drivers = [drivers];\n }\n\n var supportedDrivers = this._getSupportedDrivers(drivers);\n\n function setDriverToConfig() {\n self._config.driver = self.driver();\n }\n\n function extendSelfWithDriver(driver) {\n self._extend(driver);\n setDriverToConfig();\n\n self._ready = self._initStorage(self._config);\n return self._ready;\n }\n\n function initDriver(supportedDrivers) {\n return function () {\n var currentDriverIndex = 0;\n\n function driverPromiseLoop() {\n while (currentDriverIndex < supportedDrivers.length) {\n var driverName = supportedDrivers[currentDriverIndex];\n currentDriverIndex++;\n\n self._dbInfo = null;\n self._ready = null;\n\n return self.getDriver(driverName).then(extendSelfWithDriver)[\"catch\"](driverPromiseLoop);\n }\n\n setDriverToConfig();\n var error = new Error('No available storage method found.');\n self._driverSet = Promise$1.reject(error);\n return self._driverSet;\n }\n\n return driverPromiseLoop();\n };\n }\n\n // There might be a driver initialization in progress\n // so wait for it to finish in order to avoid a possible\n // race condition to set _dbInfo\n var oldDriverSetDone = this._driverSet !== null ? this._driverSet[\"catch\"](function () {\n return Promise$1.resolve();\n }) : Promise$1.resolve();\n\n this._driverSet = oldDriverSetDone.then(function () {\n var driverName = supportedDrivers[0];\n self._dbInfo = null;\n self._ready = null;\n\n return self.getDriver(driverName).then(function (driver) {\n self._driver = driver._driver;\n setDriverToConfig();\n self._wrapLibraryMethodsWithReady();\n self._initDriver = initDriver(supportedDrivers);\n });\n })[\"catch\"](function () {\n setDriverToConfig();\n var error = new Error('No available storage method found.');\n self._driverSet = Promise$1.reject(error);\n return self._driverSet;\n });\n\n executeTwoCallbacks(this._driverSet, callback, errorCallback);\n return this._driverSet;\n };\n\n LocalForage.prototype.supports = function supports(driverName) {\n return !!DriverSupport[driverName];\n };\n\n LocalForage.prototype._extend = function _extend(libraryMethodsAndProperties) {\n extend(this, libraryMethodsAndProperties);\n };\n\n LocalForage.prototype._getSupportedDrivers = function _getSupportedDrivers(drivers) {\n var supportedDrivers = [];\n for (var i = 0, len = drivers.length; i < len; i++) {\n var driverName = drivers[i];\n if (this.supports(driverName)) {\n supportedDrivers.push(driverName);\n }\n }\n return supportedDrivers;\n };\n\n LocalForage.prototype._wrapLibraryMethodsWithReady = function _wrapLibraryMethodsWithReady() {\n // Add a stub for each driver API method that delays the call to the\n // corresponding driver method until localForage is ready. These stubs\n // will be replaced by the driver methods as soon as the driver is\n // loaded, so there is no performance impact.\n for (var i = 0, len = LibraryMethods.length; i < len; i++) {\n callWhenReady(this, LibraryMethods[i]);\n }\n };\n\n LocalForage.prototype.createInstance = function createInstance(options) {\n return new LocalForage(options);\n };\n\n return LocalForage;\n}();\n\n// The actual localForage object that we expose as a module or via a\n// global. It's extended by pulling in one of our other libraries.\n\n\nvar localforage_js = new LocalForage();\n\nmodule.exports = localforage_js;\n\n},{\"3\":3}]},{},[4])(4)\n});\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var baseForOwn = require('./_baseForOwn'),\n createBaseEach = require('./_createBaseEach');\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n","var baseEach = require('./_baseEach');\n\n/**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n}\n\nmodule.exports = baseFilter;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n","var arrayPush = require('./_arrayPush'),\n isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","var baseFor = require('./_baseFor'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","var baseEach = require('./_baseEach'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\nmodule.exports = baseMap;\n","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","var arrayMap = require('./_arrayMap'),\n baseGet = require('./_baseGet'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n baseSortBy = require('./_baseSortBy'),\n baseUnary = require('./_baseUnary'),\n compareMultiple = require('./_compareMultiple'),\n identity = require('./identity'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\nfunction baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(baseIteratee));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n}\n\nmodule.exports = baseOrderBy;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","var identity = require('./identity'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","var constant = require('./constant'),\n defineProperty = require('./_defineProperty'),\n identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nmodule.exports = baseSetToString;\n","/**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\nfunction baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n}\n\nmodule.exports = baseSortBy;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var arrayMap = require('./_arrayMap');\n\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\nfunction baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n}\n\nmodule.exports = baseValues;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var isSymbol = require('./isSymbol');\n\n/**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\nfunction compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n}\n\nmodule.exports = compareAscending;\n","var compareAscending = require('./_compareAscending');\n\n/**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\nfunction compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n}\n\nmodule.exports = compareMultiple;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nmodule.exports = createBaseEach;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","var Symbol = require('./_Symbol'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var eq = require('./eq'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","var baseSetToString = require('./_baseSetToString'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var arrayFilter = require('./_arrayFilter'),\n baseFilter = require('./_baseFilter'),\n baseIteratee = require('./_baseIteratee'),\n isArray = require('./isArray');\n\n/**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\nfunction filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, baseIteratee(predicate, 3));\n}\n\nmodule.exports = filter;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","var baseIndexOf = require('./_baseIndexOf'),\n isArrayLike = require('./isArrayLike'),\n isString = require('./isString'),\n toInteger = require('./toInteger'),\n values = require('./values');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\nfunction includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n}\n\nmodule.exports = includes;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","var baseFlatten = require('./_baseFlatten'),\n baseOrderBy = require('./_baseOrderBy'),\n baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\nvar sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n});\n\nmodule.exports = sortBy;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nmodule.exports = toFinite;\n","var toFinite = require('./toFinite');\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nmodule.exports = toInteger;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var baseValues = require('./_baseValues'),\n keys = require('./keys');\n\n/**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\nfunction values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n}\n\nmodule.exports = values;\n","'use strict';\n\nvar qs = require('querystring')\n , url = require('url')\n , xtend = require('xtend');\n\nconst PARSE_LINK_HEADER_MAXLEN = parseInt(process.env.PARSE_LINK_HEADER_MAXLEN) || 2000;\nconst PARSE_LINK_HEADER_THROW_ON_MAXLEN_EXCEEDED = process.env.PARSE_LINK_HEADER_THROW_ON_MAXLEN_EXCEEDED != null\n\nfunction hasRel(x) {\n return x && x.rel;\n}\n\nfunction intoRels (acc, x) {\n function splitRel (rel) {\n acc[rel] = xtend(x, { rel: rel });\n }\n\n x.rel.split(/\\s+/).forEach(splitRel);\n\n return acc;\n}\n\nfunction createObjects (acc, p) {\n // rel=\"next\" => 1: rel 2: next\n var m = p.match(/\\s*(.+)\\s*=\\s*\"?([^\"]+)\"?/)\n if (m) acc[m[1]] = m[2];\n return acc;\n}\n\nfunction parseLink(link) {\n try {\n var m = link.match(/]*)>(.*)/)\n , linkUrl = m[1]\n , parts = m[2].split(';')\n , parsedUrl = url.parse(linkUrl)\n , qry = qs.parse(parsedUrl.query);\n\n parts.shift();\n\n var info = parts\n .reduce(createObjects, {});\n \n info = xtend(qry, info);\n info.url = linkUrl;\n return info;\n } catch (e) {\n return null;\n }\n}\n\nfunction checkHeader(linkHeader){\n if (!linkHeader) return false;\n\n if (linkHeader.length > PARSE_LINK_HEADER_MAXLEN) {\n if (PARSE_LINK_HEADER_THROW_ON_MAXLEN_EXCEEDED) {\n throw new Error('Input string too long, it should be under ' + PARSE_LINK_HEADER_MAXLEN + ' characters.');\n } else {\n return false;\n }\n }\n return true;\n}\n\nmodule.exports = function (linkHeader) {\n if (!checkHeader(linkHeader)) return null;\n\n return linkHeader.split(/,\\s*= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see \n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * http://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\t\t /** Cached calculation results */\n\t\t baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t inputLength,\n\t\t /** Cached calculation results */\n\t\t handledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.3.2',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see \n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) { // in Node.js or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n\n var maxKeys = 1000;\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length;\n // maxKeys <= 0 means that we should not limit keys count\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr, vstr, k, v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (Array.isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar stringifyPrimitive = function(v) {\n switch (typeof v) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n if (obj === null) {\n obj = undefined;\n }\n\n if (typeof obj === 'object') {\n return Object.keys(obj).map(function(k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n if (Array.isArray(obj[k])) {\n return obj[k].map(function(v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n\n }\n\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq +\n encodeURIComponent(stringifyPrimitive(obj));\n};\n","'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar punycode = require('punycode');\nvar util = require('./util');\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // Special case for a simple path URL\n simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,\n\n // RFC 2396: characters reserved for delimiting URLs.\n // We actually just auto-escape these.\n delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n // Characters that are never ever allowed in a hostname.\n // Note that any invalid chars are also handled, but these\n // are the ones that are *expected* to be seen, so we fast-path\n // them.\n nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n hostEndingChars = ['/', '?', '#'],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n unsafeProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that never have a hostname.\n hostlessProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n 'http': true,\n 'https': true,\n 'ftp': true,\n 'gopher': true,\n 'file': true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n },\n querystring = require('querystring');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && util.isObject(url) && url instanceof Url) return url;\n\n var u = new Url;\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {\n if (!util.isString(url)) {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n }\n\n // Copy chrome, IE, opera backslash-handling behavior.\n // Back slashes before the query string get converted to forward slashes\n // See: https://code.google.com/p/chromium/issues/detail?id=25916\n var queryIndex = url.indexOf('?'),\n splitter =\n (queryIndex !== -1 && queryIndex < url.indexOf('#')) ? '?' : '#',\n uSplit = url.split(splitter),\n slashRegex = /\\\\/g;\n uSplit[0] = uSplit[0].replace(slashRegex, '/');\n url = uSplit.join(splitter);\n\n var rest = url;\n\n // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n rest = rest.trim();\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n var simplePath = simplePathPattern.exec(rest);\n if (simplePath) {\n this.path = rest;\n this.href = rest;\n this.pathname = simplePath[1];\n if (simplePath[2]) {\n this.search = simplePath[2];\n if (parseQueryString) {\n this.query = querystring.parse(this.search.substr(1));\n } else {\n this.query = this.search.substr(1);\n }\n } else if (parseQueryString) {\n this.search = '';\n this.query = {};\n }\n return this;\n }\n }\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n }\n\n // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] &&\n (slashes || (proto && !slashedProtocol[proto]))) {\n\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n\n // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n // Now we have a portion which is definitely the auth.\n // Pull that off.\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1)\n hostEnd = rest.length;\n\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost();\n\n // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n this.hostname = this.hostname || '';\n\n // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n var ipv6Hostname = this.hostname[0] === '[' &&\n this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) continue;\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n\n if (!ipv6Hostname) {\n // IDNA Support: Returns a punycoded representation of \"domain\".\n // It only converts parts of the domain name that\n // have non-ASCII characters, i.e. it doesn't matter if\n // you call it with a domain that already is ASCII-only.\n this.hostname = punycode.toASCII(this.hostname);\n }\n\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host;\n\n // strip [ and ] from the hostname\n // the host field still retains them, though\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n }\n\n // now rest is set to the post-host stuff.\n // chop off any delim chars.\n if (!unsafeProtocol[lowerProto]) {\n\n // First, make 100% sure that any \"autoEscape\" chars get\n // escaped, even if encodeURIComponent doesn't think they\n // need to be.\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n if (rest.indexOf(ae) === -1)\n continue;\n var esc = encodeURIComponent(ae);\n if (esc === ae) {\n esc = escape(ae);\n }\n rest = rest.split(ae).join(esc);\n }\n }\n\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n if (rest) this.pathname = rest;\n if (slashedProtocol[lowerProto] &&\n this.hostname && !this.pathname) {\n this.pathname = '/';\n }\n\n //to support http.request\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n }\n\n // finally, reconstruct the href based on what has been validated.\n this.href = this.format();\n return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n // ensure it's an object, and not a string url.\n // If it's an obj, this is a no-op.\n // this way, you can call url_format() on strings\n // to clean up potentially wonky urls.\n if (util.isString(obj)) obj = urlParse(obj);\n if (!(obj instanceof Url)) return Url.prototype.format.call(obj);\n return obj.format();\n}\n\nUrl.prototype.format = function() {\n var auth = this.auth || '';\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n\n var protocol = this.protocol || '',\n pathname = this.pathname || '',\n hash = this.hash || '',\n host = false,\n query = '';\n\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ?\n this.hostname :\n '[' + this.hostname + ']');\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query &&\n util.isObject(this.query) &&\n Object.keys(this.query).length) {\n query = querystring.stringify(this.query);\n }\n\n var search = this.search || (query && ('?' + query)) || '';\n\n if (protocol && protocol.substr(-1) !== ':') protocol += ':';\n\n // only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n // unless they had them to begin with.\n if (this.slashes ||\n (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;\n } else if (!host) {\n host = '';\n }\n\n if (hash && hash.charAt(0) !== '#') hash = '#' + hash;\n if (search && search.charAt(0) !== '?') search = '?' + search;\n\n pathname = pathname.replace(/[?#]/g, function(match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n\n return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function(relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n if (!source) return relative;\n return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function(relative) {\n if (util.isString(relative)) {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n var tkeys = Object.keys(this);\n for (var tk = 0; tk < tkeys.length; tk++) {\n var tkey = tkeys[tk];\n result[tkey] = this[tkey];\n }\n\n // hash is always overridden, no matter what.\n // even href=\"\" will remove it.\n result.hash = relative.hash;\n\n // if the relative url is empty, then there's nothing left to do here.\n if (relative.href === '') {\n result.href = result.format();\n return result;\n }\n\n // hrefs like //foo/bar always cut to the protocol.\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n var rkeys = Object.keys(relative);\n for (var rk = 0; rk < rkeys.length; rk++) {\n var rkey = rkeys[rk];\n if (rkey !== 'protocol')\n result[rkey] = relative[rkey];\n }\n\n //urlParse appends trailing / to urls like http://www.example.com\n if (slashedProtocol[result.protocol] &&\n result.hostname && !result.pathname) {\n result.path = result.pathname = '/';\n }\n\n result.href = result.format();\n return result;\n }\n\n if (relative.protocol && relative.protocol !== result.protocol) {\n // if it's a known url protocol, then changing\n // the protocol does weird things\n // first, if it's not file:, then we MUST have a host,\n // and if there was a path\n // to begin with, then we MUST have a path.\n // if it is file:, then the host is dropped,\n // because that's known to be hostless.\n // anything else is assumed to be absolute.\n if (!slashedProtocol[relative.protocol]) {\n var keys = Object.keys(relative);\n for (var v = 0; v < keys.length; v++) {\n var k = keys[v];\n result[k] = relative[k];\n }\n result.href = result.format();\n return result;\n }\n\n result.protocol = relative.protocol;\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n while (relPath.length && !(relative.host = relPath.shift()));\n if (!relative.host) relative.host = '';\n if (!relative.hostname) relative.hostname = '';\n if (relPath[0] !== '') relPath.unshift('');\n if (relPath.length < 2) relPath.unshift('');\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port;\n // to support http.request\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n\n var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),\n isRelAbs = (\n relative.host ||\n relative.pathname && relative.pathname.charAt(0) === '/'\n ),\n mustEndAbs = (isRelAbs || isSourceAbs ||\n (result.host && relative.pathname)),\n removeAllDots = mustEndAbs,\n srcPath = result.pathname && result.pathname.split('/') || [],\n relPath = relative.pathname && relative.pathname.split('/') || [],\n psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n // if the url is a non-slashed url, then relative\n // links like ../.. should be able\n // to crawl up to the hostname, as well. This is strange.\n // result.protocol has already been set by now.\n // Later on, put the first path part into the host field.\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n if (result.host) {\n if (srcPath[0] === '') srcPath[0] = result.host;\n else srcPath.unshift(result.host);\n }\n result.host = '';\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n if (relative.host) {\n if (relPath[0] === '') relPath[0] = relative.host;\n else relPath.unshift(relative.host);\n }\n relative.host = null;\n }\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n\n if (isRelAbs) {\n // it's absolute.\n result.host = (relative.host || relative.host === '') ?\n relative.host : result.host;\n result.hostname = (relative.hostname || relative.hostname === '') ?\n relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath;\n // fall through to the dot-handling below.\n } else if (relPath.length) {\n // it's relative\n // throw away the existing file, and take the new path instead.\n if (!srcPath) srcPath = [];\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (!util.isNullOrUndefined(relative.search)) {\n // just pull out the search.\n // like href='?foo'.\n // Put this after the other two cases because it simplifies the booleans\n if (psychotic) {\n result.hostname = result.host = srcPath.shift();\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n result.search = relative.search;\n result.query = relative.query;\n //to support http.request\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n // no path at all. easy.\n // we've already handled the other stuff above.\n result.pathname = null;\n //to support http.request\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n result.href = result.format();\n return result;\n }\n\n // if a url ENDs in . or .., then it must get a trailing slash.\n // however, if it ends in anything else non-slashy,\n // then it must NOT get a trailing slash.\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (\n (result.host || relative.host || srcPath.length > 1) &&\n (last === '.' || last === '..') || last === '');\n\n // strip single dots, resolve double dots to parent dir\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n if (last === '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n\n if (mustEndAbs && srcPath[0] !== '' &&\n (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n\n if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n srcPath.push('');\n }\n\n var isAbsolute = srcPath[0] === '' ||\n (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n // put the host back\n if (psychotic) {\n result.hostname = result.host = isAbsolute ? '' :\n srcPath.length ? srcPath.shift() : '';\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n\n mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (!srcPath.length) {\n result.pathname = null;\n result.path = null;\n } else {\n result.pathname = srcPath.join('/');\n }\n\n //to support request.http\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n};\n\nUrl.prototype.parseHost = function() {\n var host = this.host;\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) this.hostname = host;\n};\n","'use strict';\n\nmodule.exports = {\n isString: function(arg) {\n return typeof(arg) === 'string';\n },\n isObject: function(arg) {\n return typeof(arg) === 'object' && arg !== null;\n },\n isNull: function(arg) {\n return arg === null;\n },\n isNullOrUndefined: function(arg) {\n return arg == null;\n }\n};\n","module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n var target = {}\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n\n return target\n}\n","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n return exports;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n var exports = {},\n Op = Object.prototype,\n hasOwn = Op.hasOwnProperty,\n defineProperty = Object.defineProperty || function (obj, key, desc) {\n obj[key] = desc.value;\n },\n $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n function define(obj, key, value) {\n return Object.defineProperty(obj, key, {\n value: value,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), obj[key];\n }\n try {\n define({}, \"\");\n } catch (err) {\n define = function define(obj, key, value) {\n return obj[key] = value;\n };\n }\n function wrap(innerFn, outerFn, self, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,\n generator = Object.create(protoGenerator.prototype),\n context = new Context(tryLocsList || []);\n return defineProperty(generator, \"_invoke\", {\n value: makeInvokeMethod(innerFn, self, context)\n }), generator;\n }\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n exports.wrap = wrap;\n var ContinueSentinel = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n var getProto = Object.getPrototypeOf,\n NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n define(prototype, method, function (arg) {\n return this._invoke(method, arg);\n });\n });\n }\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (\"throw\" !== record.type) {\n var result = record.arg,\n value = result.value;\n return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n }) : PromiseImpl.resolve(value).then(function (unwrapped) {\n result.value = unwrapped, resolve(result);\n }, function (error) {\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n reject(record.arg);\n }\n var previousPromise;\n defineProperty(this, \"_invoke\", {\n value: function value(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(innerFn, self, context) {\n var state = \"suspendedStart\";\n return function (method, arg) {\n if (\"executing\" === state) throw new Error(\"Generator is already running\");\n if (\"completed\" === state) {\n if (\"throw\" === method) throw arg;\n return doneResult();\n }\n for (context.method = method, context.arg = arg;;) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) {\n if (\"suspendedStart\" === state) throw state = \"completed\", context.arg;\n context.dispatchException(context.arg);\n } else \"return\" === context.method && context.abrupt(\"return\", context.arg);\n state = \"executing\";\n var record = tryCatch(innerFn, self, context);\n if (\"normal\" === record.type) {\n if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue;\n return {\n value: record.arg,\n done: context.done\n };\n }\n \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n }\n };\n }\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (undefined === method) {\n if (context.delegate = null, \"throw\" === context.method) {\n if (delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method)) return ContinueSentinel;\n context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a 'throw' method\");\n }\n return ContinueSentinel;\n }\n var record = tryCatch(method, delegate.iterator, context.arg);\n if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel;\n var info = record.arg;\n return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel);\n }\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);\n }\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\", delete record.arg, entry.completion = record;\n }\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) return iteratorMethod.call(iterable);\n if (\"function\" == typeof iterable.next) return iterable;\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n for (; ++i < iterable.length;) {\n if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n }\n return next.value = undefined, next.done = !0, next;\n };\n return next.next = next;\n }\n }\n return {\n next: doneResult\n };\n }\n function doneResult() {\n return {\n value: undefined,\n done: !0\n };\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), defineProperty(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) {\n var ctor = \"function\" == typeof genFun && genFun.constructor;\n return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name));\n }, exports.mark = function (genFun) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun;\n }, exports.awrap = function (arg) {\n return {\n __await: arg\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n void 0 === PromiseImpl && (PromiseImpl = Promise);\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () {\n return this;\n }), define(Gp, \"toString\", function () {\n return \"[object Generator]\";\n }), exports.keys = function (val) {\n var object = Object(val),\n keys = [];\n for (var key in object) {\n keys.push(key);\n }\n return keys.reverse(), function next() {\n for (; keys.length;) {\n var key = keys.pop();\n if (key in object) return next.value = key, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, exports.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(skipTempReset) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) {\n \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\n }\n },\n stop: function stop() {\n this.done = !0;\n var rootRecord = this.tryEntries[0].completion;\n if (\"throw\" === rootRecord.type) throw rootRecord.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(exception) {\n if (this.done) throw exception;\n var context = this;\n function handle(loc, caught) {\n return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught;\n }\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i],\n record = entry.completion;\n if (\"root\" === entry.tryLoc) return handle(\"end\");\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n hasFinally = hasOwn.call(entry, \"finallyLoc\");\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n } else {\n if (!hasFinally) throw new Error(\"try statement without catch or finally\");\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);\n var record = finallyEntry ? finallyEntry.completion : {};\n return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);\n },\n complete: function complete(record, afterLoc) {\n if (\"throw\" === record.type) throw record.arg;\n return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;\n },\n finish: function finish(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;\n }\n },\n \"catch\": function _catch(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (\"throw\" === record.type) {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n return this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel;\n }\n }, exports;\n}\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// TODO(Babel 8): Remove this file.\n\nvar runtime = require(\"../helpers/regeneratorRuntime\")();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","import { filter, sortBy, includes } from 'lodash'\nimport { muteWordHits } from '../status_parser/status_parser.js'\nimport { showDesktopNotification } from '../desktop_notification_utils/desktop_notification_utils.js'\n\nexport const notificationsFromStore = store => store.state.statuses.notifications.data\n\nexport const visibleTypes = store => {\n const rootState = store.rootState || store.state\n\n return ([\n rootState.config.notificationVisibility.likes && 'like',\n rootState.config.notificationVisibility.mentions && 'mention',\n rootState.config.notificationVisibility.repeats && 'repeat',\n rootState.config.notificationVisibility.follows && 'follow',\n rootState.config.notificationVisibility.followRequest && 'follow_request',\n rootState.config.notificationVisibility.moves && 'move',\n rootState.config.notificationVisibility.emojiReactions && 'pleroma:emoji_reaction',\n rootState.config.notificationVisibility.reports && 'pleroma:report',\n rootState.config.notificationVisibility.polls && 'poll'\n ].filter(_ => _))\n}\n\nconst statusNotifications = ['like', 'mention', 'repeat', 'pleroma:emoji_reaction', 'poll']\n\nexport const isStatusNotification = (type) => includes(statusNotifications, type)\n\nexport const isValidNotification = (notification) => {\n if (isStatusNotification(notification.type) && !notification.status) {\n return false\n }\n return true\n}\n\nconst sortById = (a, b) => {\n const seqA = Number(a.id)\n const seqB = Number(b.id)\n const isSeqA = !Number.isNaN(seqA)\n const isSeqB = !Number.isNaN(seqB)\n if (isSeqA && isSeqB) {\n return seqA > seqB ? -1 : 1\n } else if (isSeqA && !isSeqB) {\n return 1\n } else if (!isSeqA && isSeqB) {\n return -1\n } else {\n return a.id > b.id ? -1 : 1\n }\n}\n\nconst isMutedNotification = (store, notification) => {\n if (!notification.status) return\n return notification.status.muted || muteWordHits(notification.status, store.rootGetters.mergedConfig.muteWords).length > 0\n}\n\nexport const maybeShowNotification = (store, notification) => {\n const rootState = store.rootState || store.state\n\n if (notification.seen) return\n if (!visibleTypes(store).includes(notification.type)) return\n if (notification.type === 'mention' && isMutedNotification(store, notification)) return\n\n const notificationObject = prepareNotificationObject(notification, store.rootGetters.i18n)\n showDesktopNotification(rootState, notificationObject)\n}\n\nexport const filteredNotificationsFromStore = (store, types) => {\n // map is just to clone the array since sort mutates it and it causes some issues\n let sortedNotifications = notificationsFromStore(store).map(_ => _).sort(sortById)\n sortedNotifications = sortBy(sortedNotifications, 'seen')\n return sortedNotifications.filter(\n (notification) => (types || visibleTypes(store)).includes(notification.type)\n )\n}\n\nexport const unseenNotificationsFromStore = store =>\n filter(filteredNotificationsFromStore(store), ({ seen }) => !seen)\n\nexport const prepareNotificationObject = (notification, i18n) => {\n const notifObj = {\n tag: notification.id\n }\n const status = notification.status\n const title = notification.from_profile.name\n notifObj.title = title\n notifObj.icon = notification.from_profile.profile_image_url\n let i18nString\n switch (notification.type) {\n case 'like':\n i18nString = 'favorited_you'\n break\n case 'repeat':\n i18nString = 'repeated_you'\n break\n case 'follow':\n i18nString = 'followed_you'\n break\n case 'move':\n i18nString = 'migrated_to'\n break\n case 'follow_request':\n i18nString = 'follow_request'\n break\n case 'pleroma:report':\n i18nString = 'submitted_report'\n break\n case 'poll':\n i18nString = 'poll_ended'\n break\n }\n\n if (notification.type === 'pleroma:emoji_reaction') {\n notifObj.body = i18n.t('notifications.reacted_with', [notification.emoji])\n } else if (i18nString) {\n notifObj.body = i18n.t('notifications.' + i18nString)\n } else if (isStatusNotification(notification.type)) {\n notifObj.body = notification.status.text\n }\n\n // Shows first attached non-nsfw image, if any. Should add configuration for this somehow...\n if (status && status.attachments && status.attachments.length > 0 && !status.nsfw &&\n status.attachments[0].mimetype.startsWith('image/')) {\n notifObj.image = status.attachments[0].url\n }\n\n return notifObj\n}\n","'use strict';\n\n/** Highest positive signed 32-bit float value */\nconst maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\n\n/** Bootstring parameters */\nconst base = 36;\nconst tMin = 1;\nconst tMax = 26;\nconst skew = 38;\nconst damp = 700;\nconst initialBias = 72;\nconst initialN = 128; // 0x80\nconst delimiter = '-'; // '\\x2D'\n\n/** Regular expressions */\nconst regexPunycode = /^xn--/;\nconst regexNonASCII = /[^\\0-\\x7E]/; // non-ASCII chars\nconst regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\n\n/** Error messages */\nconst errors = {\n\t'overflow': 'Overflow: input needs wider integers to process',\n\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t'invalid-input': 'Invalid input'\n};\n\n/** Convenience shortcuts */\nconst baseMinusTMin = base - tMin;\nconst floor = Math.floor;\nconst stringFromCharCode = String.fromCharCode;\n\n/*--------------------------------------------------------------------------*/\n\n/**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\nfunction error(type) {\n\tthrow new RangeError(errors[type]);\n}\n\n/**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\nfunction map(array, fn) {\n\tconst result = [];\n\tlet length = array.length;\n\twhile (length--) {\n\t\tresult[length] = fn(array[length]);\n\t}\n\treturn result;\n}\n\n/**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {Array} A new string of characters returned by the callback\n * function.\n */\nfunction mapDomain(string, fn) {\n\tconst parts = string.split('@');\n\tlet result = '';\n\tif (parts.length > 1) {\n\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t// the local part (i.e. everything up to `@`) intact.\n\t\tresult = parts[0] + '@';\n\t\tstring = parts[1];\n\t}\n\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\tstring = string.replace(regexSeparators, '\\x2E');\n\tconst labels = string.split('.');\n\tconst encoded = map(labels, fn).join('.');\n\treturn result + encoded;\n}\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see \n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\nfunction ucs2decode(string) {\n\tconst output = [];\n\tlet counter = 0;\n\tconst length = string.length;\n\twhile (counter < length) {\n\t\tconst value = string.charCodeAt(counter++);\n\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t// It's a high surrogate, and there is a next character.\n\t\t\tconst extra = string.charCodeAt(counter++);\n\t\t\tif ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t} else {\n\t\t\t\t// It's an unmatched surrogate; only append this code unit, in case the\n\t\t\t\t// next code unit is the high surrogate of a surrogate pair.\n\t\t\t\toutput.push(value);\n\t\t\t\tcounter--;\n\t\t\t}\n\t\t} else {\n\t\t\toutput.push(value);\n\t\t}\n\t}\n\treturn output;\n}\n\n/**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\nconst ucs2encode = array => String.fromCodePoint(...array);\n\n/**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\nconst basicToDigit = function(codePoint) {\n\tif (codePoint - 0x30 < 0x0A) {\n\t\treturn codePoint - 0x16;\n\t}\n\tif (codePoint - 0x41 < 0x1A) {\n\t\treturn codePoint - 0x41;\n\t}\n\tif (codePoint - 0x61 < 0x1A) {\n\t\treturn codePoint - 0x61;\n\t}\n\treturn base;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\nconst digitToBasic = function(digit, flag) {\n\t// 0..25 map to ASCII a..z or A..Z\n\t// 26..35 map to ASCII 0..9\n\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\nconst adapt = function(delta, numPoints, firstTime) {\n\tlet k = 0;\n\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\tdelta += floor(delta / numPoints);\n\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\tdelta = floor(delta / baseMinusTMin);\n\t}\n\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\nconst decode = function(input) {\n\t// Don't use UCS-2.\n\tconst output = [];\n\tconst inputLength = input.length;\n\tlet i = 0;\n\tlet n = initialN;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points: let `basic` be the number of input code\n\t// points before the last delimiter, or `0` if there is none, then copy\n\t// the first basic code points to the output.\n\n\tlet basic = input.lastIndexOf(delimiter);\n\tif (basic < 0) {\n\t\tbasic = 0;\n\t}\n\n\tfor (let j = 0; j < basic; ++j) {\n\t\t// if it's not a basic code point\n\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\terror('not-basic');\n\t\t}\n\t\toutput.push(input.charCodeAt(j));\n\t}\n\n\t// Main decoding loop: start just after the last delimiter if any basic code\n\t// points were copied; start at the beginning otherwise.\n\n\tfor (let index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t// `index` is the index of the next character to be consumed.\n\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t// which gets added to `i`. The overflow checking is easier\n\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t// value at the end to obtain `delta`.\n\t\tlet oldi = i;\n\t\tfor (let w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\tif (index >= inputLength) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\n\t\t\tconst digit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\ti += digit * w;\n\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\tif (digit < t) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst baseMinusT = base - t;\n\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tw *= baseMinusT;\n\n\t\t}\n\n\t\tconst out = output.length + 1;\n\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t// incrementing `n` each time, so we'll fix that now:\n\t\tif (floor(i / out) > maxInt - n) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tn += floor(i / out);\n\t\ti %= out;\n\n\t\t// Insert `n` at position `i` of the output.\n\t\toutput.splice(i++, 0, n);\n\n\t}\n\n\treturn String.fromCodePoint(...output);\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\nconst encode = function(input) {\n\tconst output = [];\n\n\t// Convert the input in UCS-2 to an array of Unicode code points.\n\tinput = ucs2decode(input);\n\n\t// Cache the length.\n\tlet inputLength = input.length;\n\n\t// Initialize the state.\n\tlet n = initialN;\n\tlet delta = 0;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points.\n\tfor (const currentValue of input) {\n\t\tif (currentValue < 0x80) {\n\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t}\n\t}\n\n\tlet basicLength = output.length;\n\tlet handledCPCount = basicLength;\n\n\t// `handledCPCount` is the number of code points that have been handled;\n\t// `basicLength` is the number of basic code points.\n\n\t// Finish the basic string with a delimiter unless it's empty.\n\tif (basicLength) {\n\t\toutput.push(delimiter);\n\t}\n\n\t// Main encoding loop:\n\twhile (handledCPCount < inputLength) {\n\n\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t// larger one:\n\t\tlet m = maxInt;\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\tm = currentValue;\n\t\t\t}\n\t\t}\n\n\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t// but guard against overflow.\n\t\tconst handledCPCountPlusOne = handledCPCount + 1;\n\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\tn = m;\n\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\t\t\tif (currentValue == n) {\n\t\t\t\t// Represent delta as a generalized variable-length integer.\n\t\t\t\tlet q = delta;\n\t\t\t\tfor (let k = base; /* no condition */; k += base) {\n\t\t\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tconst qMinusT = q - t;\n\t\t\t\t\tconst baseMinusT = base - t;\n\t\t\t\t\toutput.push(\n\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t);\n\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t}\n\n\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\tdelta = 0;\n\t\t\t\t++handledCPCount;\n\t\t\t}\n\t\t}\n\n\t\t++delta;\n\t\t++n;\n\n\t}\n\treturn output.join('');\n};\n\n/**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\nconst toUnicode = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexPunycode.test(string)\n\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t: string;\n\t});\n};\n\n/**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\nconst toASCII = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexNonASCII.test(string)\n\t\t\t? 'xn--' + encode(string)\n\t\t\t: string;\n\t});\n};\n\n/*--------------------------------------------------------------------------*/\n\n/** Define the public API */\nconst punycode = {\n\t/**\n\t * A string representing the current Punycode.js version number.\n\t * @memberOf punycode\n\t * @type String\n\t */\n\t'version': '2.1.0',\n\t/**\n\t * An object of methods to convert from JavaScript's internal character\n\t * representation (UCS-2) to Unicode code points, and back.\n\t * @see \n\t * @memberOf punycode\n\t * @type Object\n\t */\n\t'ucs2': {\n\t\t'decode': ucs2decode,\n\t\t'encode': ucs2encode\n\t},\n\t'decode': decode,\n\t'encode': encode,\n\t'toASCII': toASCII,\n\t'toUnicode': toUnicode\n};\n\nexport default punycode;\n","import escape from 'escape-html'\nimport parseLinkHeader from 'parse-link-header'\nimport { isStatusNotification } from '../notification_utils/notification_utils.js'\nimport punycode from 'punycode.js'\n\n/** NOTICE! **\n * Do not initialize UI-generated data here.\n * It will override existing data.\n *\n * i.e. user.pinnedStatusIds was set to [] here\n * UI code would update it with data but upon next user fetch\n * it would be reverted back to []\n */\n\nconst qvitterStatusType = (status) => {\n if (status.is_post_verb) {\n return 'status'\n }\n\n if (status.retweeted_status) {\n return 'retweet'\n }\n\n if ((typeof status.uri === 'string' && status.uri.match(/(fave|objectType=Favourite)/)) ||\n (typeof status.text === 'string' && status.text.match(/favorited/))) {\n return 'favorite'\n }\n\n if (status.text.match(/deleted notice {{tag/) || status.qvitter_delete_notice) {\n return 'deletion'\n }\n\n if (status.text.match(/started following/) || status.activity_type === 'follow') {\n return 'follow'\n }\n\n return 'unknown'\n}\n\nexport const parseUser = (data) => {\n const output = {}\n const masto = Object.prototype.hasOwnProperty.call(data, 'acct')\n // case for users in \"mentions\" property for statuses in MastoAPI\n const mastoShort = masto && !Object.prototype.hasOwnProperty.call(data, 'avatar')\n\n output.inLists = null\n output.id = String(data.id)\n output._original = data // used for server-side settings\n\n if (masto) {\n output.screen_name = data.acct\n output.fqn = data.fqn\n output.statusnet_profile_url = data.url\n\n // There's nothing else to get\n if (mastoShort) {\n return output\n }\n\n output.emoji = data.emojis\n output.name = escape(data.display_name)\n output.name_html = output.name\n output.name_unescaped = data.display_name\n\n output.description = data.note\n // TODO cleanup this shit, output.description is overriden with source data\n output.description_html = data.note\n\n output.fields = data.fields\n output.fields_html = data.fields.map(field => {\n return {\n name: escape(field.name),\n value: field.value\n }\n })\n output.fields_text = data.fields.map(field => {\n return {\n name: unescape(field.name.replace(/<[^>]*>/g, '')),\n value: unescape(field.value.replace(/<[^>]*>/g, ''))\n }\n })\n\n // Utilize avatar_static for gif avatars?\n output.profile_image_url = data.avatar\n output.profile_image_url_original = data.avatar\n\n // Same, utilize header_static?\n output.cover_photo = data.header\n\n output.friends_count = data.following_count\n\n output.bot = data.bot\n\n if (data.pleroma) {\n if (data.pleroma.settings_store) {\n output.storage = data.pleroma.settings_store['pleroma-fe']\n }\n const relationship = data.pleroma.relationship\n\n output.background_image = data.pleroma.background_image\n output.favicon = data.pleroma.favicon\n output.token = data.pleroma.chat_token\n\n if (relationship) {\n output.relationship = relationship\n }\n\n output.allow_following_move = data.pleroma.allow_following_move\n\n output.hide_follows = data.pleroma.hide_follows\n output.hide_followers = data.pleroma.hide_followers\n output.hide_follows_count = data.pleroma.hide_follows_count\n output.hide_followers_count = data.pleroma.hide_followers_count\n\n output.rights = {\n moderator: data.pleroma.is_moderator,\n admin: data.pleroma.is_admin\n }\n // TODO: Clean up in UI? This is duplication from what BE does for qvitterapi\n if (output.rights.admin) {\n output.role = 'admin'\n } else if (output.rights.moderator) {\n output.role = 'moderator'\n } else {\n output.role = 'member'\n }\n\n if (data.pleroma.privileges) {\n output.privileges = data.pleroma.privileges\n } else if (data.pleroma.is_admin) {\n output.privileges = [\n 'users_read',\n 'users_manage_invites',\n 'users_manage_activation_state',\n 'users_manage_tags',\n 'users_manage_credentials',\n 'users_delete',\n 'messages_read',\n 'messages_delete',\n 'instances_delete',\n 'reports_manage_reports',\n 'moderation_log_read',\n 'announcements_manage_announcements',\n 'emoji_manage_emoji',\n 'statistics_read'\n ]\n } else if (data.pleroma.is_moderator) {\n output.privileges = [\n 'messages_delete',\n 'reports_manage_reports'\n ]\n } else {\n output.privileges = []\n }\n }\n\n if (data.source) {\n output.description = data.source.note\n output.default_scope = data.source.privacy\n output.fields = data.source.fields\n if (data.source.pleroma) {\n output.no_rich_text = data.source.pleroma.no_rich_text\n output.show_role = data.source.pleroma.show_role\n output.discoverable = data.source.pleroma.discoverable\n }\n }\n\n // TODO: handle is_local\n output.is_local = !output.screen_name.includes('@')\n } else {\n output.screen_name = data.screen_name\n\n output.name = data.name\n output.name_html = data.name_html\n\n output.description = data.description\n output.description_html = data.description_html\n\n output.profile_image_url = data.profile_image_url\n output.profile_image_url_original = data.profile_image_url_original\n\n output.cover_photo = data.cover_photo\n\n output.friends_count = data.friends_count\n\n // output.bot = ??? missing\n\n output.statusnet_profile_url = data.statusnet_profile_url\n\n output.is_local = data.is_local\n output.role = data.role\n output.show_role = data.show_role\n\n if (data.rights) {\n output.rights = {\n moderator: data.rights.delete_others_notice,\n admin: data.rights.admin\n }\n }\n output.no_rich_text = data.no_rich_text\n output.default_scope = data.default_scope\n output.hide_follows = data.hide_follows\n output.hide_followers = data.hide_followers\n output.hide_follows_count = data.hide_follows_count\n output.hide_followers_count = data.hide_followers_count\n output.background_image = data.background_image\n // Websocket token\n output.token = data.token\n\n // Convert relationsip data to expected format\n output.relationship = {\n muting: data.muted,\n blocking: data.statusnet_blocking,\n followed_by: data.follows_you,\n following: data.following\n }\n }\n\n output.created_at = new Date(data.created_at)\n output.locked = data.locked\n output.followers_count = data.followers_count\n output.statuses_count = data.statuses_count\n\n if (data.pleroma) {\n output.follow_request_count = data.pleroma.follow_request_count\n\n output.tags = data.pleroma.tags\n\n // deactivated was changed to is_active in Pleroma 2.3.0\n // so check if is_active is present\n output.deactivated = typeof data.pleroma.is_active !== 'undefined'\n ? !data.pleroma.is_active // new backend\n : data.pleroma.deactivated // old backend\n\n output.notification_settings = data.pleroma.notification_settings\n output.unread_chat_count = data.pleroma.unread_chat_count\n }\n\n output.tags = output.tags || []\n output.rights = output.rights || {}\n output.notification_settings = output.notification_settings || {}\n\n // Convert punycode to unicode for UI\n output.screen_name_ui = output.screen_name\n if (output.screen_name && output.screen_name.includes('@')) {\n const parts = output.screen_name.split('@')\n const unicodeDomain = punycode.toUnicode(parts[1])\n if (unicodeDomain !== parts[1]) {\n // Add some identifier so users can potentially spot spoofing attempts:\n // lain.com and xn--lin-6cd.com would appear identical otherwise.\n output.screen_name_ui_contains_non_ascii = true\n output.screen_name_ui = [parts[0], unicodeDomain].join('@')\n } else {\n output.screen_name_ui_contains_non_ascii = false\n }\n }\n\n return output\n}\n\nexport const parseAttachment = (data) => {\n const output = {}\n const masto = !Object.prototype.hasOwnProperty.call(data, 'oembed')\n\n if (masto) {\n // Not exactly same...\n output.mimetype = data.pleroma ? data.pleroma.mime_type : data.type\n output.meta = data.meta // not present in BE yet\n output.id = data.id\n } else {\n output.mimetype = data.mimetype\n // output.meta = ??? missing\n }\n\n output.url = data.url\n output.large_thumb_url = data.preview_url\n output.description = data.description\n\n return output\n}\n\nexport const parseSource = (data) => {\n const output = {}\n\n output.text = data.text\n output.spoiler_text = data.spoiler_text\n output.content_type = data.content_type\n\n return output\n}\n\nexport const parseStatus = (data) => {\n const output = {}\n const masto = Object.prototype.hasOwnProperty.call(data, 'account')\n\n if (masto) {\n output.favorited = data.favourited\n output.fave_num = data.favourites_count\n\n output.repeated = data.reblogged\n output.repeat_num = data.reblogs_count\n\n output.bookmarked = data.bookmarked\n\n output.type = data.reblog ? 'retweet' : 'status'\n output.nsfw = data.sensitive\n\n output.raw_html = data.content\n output.emojis = data.emojis\n\n output.tags = data.tags\n\n output.edited_at = data.edited_at\n\n if (data.pleroma) {\n const { pleroma } = data\n output.text = pleroma.content ? data.pleroma.content['text/plain'] : data.content\n output.summary = pleroma.spoiler_text ? data.pleroma.spoiler_text['text/plain'] : data.spoiler_text\n output.statusnet_conversation_id = data.pleroma.conversation_id\n output.is_local = pleroma.local\n output.in_reply_to_screen_name = data.pleroma.in_reply_to_account_acct\n output.thread_muted = pleroma.thread_muted\n output.emoji_reactions = pleroma.emoji_reactions\n output.parent_visible = pleroma.parent_visible === undefined ? true : pleroma.parent_visible\n } else {\n output.text = data.content\n output.summary = data.spoiler_text\n }\n\n output.in_reply_to_status_id = data.in_reply_to_id\n output.in_reply_to_user_id = data.in_reply_to_account_id\n output.replies_count = data.replies_count\n\n if (output.type === 'retweet') {\n output.retweeted_status = parseStatus(data.reblog)\n }\n\n output.summary_raw_html = escape(data.spoiler_text)\n output.external_url = data.url\n output.poll = data.poll\n if (output.poll) {\n output.poll.options = (output.poll.options || []).map(field => ({\n ...field,\n title_html: escape(field.title)\n }))\n }\n output.pinned = data.pinned\n output.muted = data.muted\n } else {\n output.favorited = data.favorited\n output.fave_num = data.fave_num\n\n output.repeated = data.repeated\n output.repeat_num = data.repeat_num\n\n // catchall, temporary\n // Object.assign(output, data)\n\n output.type = qvitterStatusType(data)\n\n if (data.nsfw === undefined) {\n output.nsfw = isNsfw(data)\n if (data.retweeted_status) {\n output.nsfw = data.retweeted_status.nsfw\n }\n } else {\n output.nsfw = data.nsfw\n }\n\n output.raw_html = data.statusnet_html\n output.text = data.text\n\n output.in_reply_to_status_id = data.in_reply_to_status_id\n output.in_reply_to_user_id = data.in_reply_to_user_id\n output.in_reply_to_screen_name = data.in_reply_to_screen_name\n output.statusnet_conversation_id = data.statusnet_conversation_id\n\n if (output.type === 'retweet') {\n output.retweeted_status = parseStatus(data.retweeted_status)\n }\n\n output.summary = data.summary\n output.summary_html = data.summary_html\n output.external_url = data.external_url\n output.is_local = data.is_local\n }\n\n output.id = String(data.id)\n output.visibility = data.visibility\n output.card = data.card\n output.created_at = new Date(data.created_at)\n\n // Converting to string, the right way.\n output.in_reply_to_status_id = output.in_reply_to_status_id\n ? String(output.in_reply_to_status_id)\n : null\n output.in_reply_to_user_id = output.in_reply_to_user_id\n ? String(output.in_reply_to_user_id)\n : null\n\n output.user = parseUser(masto ? data.account : data.user)\n\n output.attentions = ((masto ? data.mentions : data.attentions) || []).map(parseUser)\n\n output.attachments = ((masto ? data.media_attachments : data.attachments) || [])\n .map(parseAttachment)\n\n const retweetedStatus = masto ? data.reblog : data.retweeted_status\n if (retweetedStatus) {\n output.retweeted_status = parseStatus(retweetedStatus)\n }\n\n output.favoritedBy = []\n output.rebloggedBy = []\n\n if (Object.prototype.hasOwnProperty.call(data, 'originalStatus')) {\n Object.assign(output, data.originalStatus)\n }\n\n return output\n}\n\nexport const parseNotification = (data) => {\n const mastoDict = {\n favourite: 'like',\n reblog: 'repeat'\n }\n const masto = !Object.prototype.hasOwnProperty.call(data, 'ntype')\n const output = {}\n\n if (masto) {\n output.type = mastoDict[data.type] || data.type\n output.seen = data.pleroma.is_seen\n output.status = isStatusNotification(output.type) ? parseStatus(data.status) : null\n output.action = output.status // TODO: Refactor, this is unneeded\n output.target = output.type !== 'move'\n ? null\n : parseUser(data.target)\n output.from_profile = parseUser(data.account)\n output.emoji = data.emoji\n if (data.report) {\n output.report = data.report\n output.report.content = data.report.content\n output.report.acct = parseUser(data.report.account)\n output.report.actor = parseUser(data.report.actor)\n output.report.statuses = data.report.statuses.map(parseStatus)\n }\n } else {\n const parsedNotice = parseStatus(data.notice)\n output.type = data.ntype\n output.seen = Boolean(data.is_seen)\n output.status = output.type === 'like'\n ? parseStatus(data.notice.favorited_status)\n : parsedNotice\n output.action = parsedNotice\n output.from_profile = output.type === 'pleroma:chat_mention' ? parseUser(data.account) : parseUser(data.from_profile)\n }\n\n output.created_at = new Date(data.created_at)\n output.id = parseInt(data.id)\n\n return output\n}\n\nconst isNsfw = (status) => {\n const nsfwRegex = /#nsfw/i\n return (status.tags || []).includes('nsfw') || !!(status.text || '').match(nsfwRegex)\n}\n\nexport const parseLinkHeaderPagination = (linkHeader, opts = {}) => {\n const flakeId = opts.flakeId\n const parsedLinkHeader = parseLinkHeader(linkHeader)\n if (!parsedLinkHeader) return\n const maxId = parsedLinkHeader.next.max_id\n const minId = parsedLinkHeader.prev.min_id\n\n return {\n maxId: flakeId ? maxId : parseInt(maxId, 10),\n minId: flakeId ? minId : parseInt(minId, 10)\n }\n}\n\nexport const parseChat = (chat) => {\n const output = {}\n output.id = chat.id\n output.account = parseUser(chat.account)\n output.unread = chat.unread\n output.lastMessage = parseChatMessage(chat.last_message)\n output.updated_at = new Date(chat.updated_at)\n return output\n}\n\nexport const parseChatMessage = (message) => {\n if (!message) { return }\n if (message.isNormalized) { return message }\n const output = message\n output.id = message.id\n output.created_at = new Date(message.created_at)\n output.chat_id = message.chat_id\n output.emojis = message.emojis\n output.content = message.content\n if (message.attachment) {\n output.attachments = [parseAttachment(message.attachment)]\n } else {\n output.attachments = []\n }\n output.pending = !!message.pending\n output.error = false\n output.idempotency_key = message.idempotency_key\n output.isNormalized = true\n return output\n}\n","/*!\n * shared v9.2.2\n * (c) 2022 kazuya kawaguchi\n * Released under the MIT License.\n */\n/**\r\n * Original Utilities\r\n * written by kazuya kawaguchi\r\n */\r\nconst inBrowser = typeof window !== 'undefined';\r\nlet mark;\r\nlet measure;\r\nif ((process.env.NODE_ENV !== 'production')) {\r\n const perf = inBrowser && window.performance;\r\n if (perf &&\r\n perf.mark &&\r\n perf.measure &&\r\n perf.clearMarks &&\r\n perf.clearMeasures) {\r\n mark = (tag) => perf.mark(tag);\r\n measure = (name, startTag, endTag) => {\r\n perf.measure(name, startTag, endTag);\r\n perf.clearMarks(startTag);\r\n perf.clearMarks(endTag);\r\n };\r\n }\r\n}\r\nconst RE_ARGS = /\\{([0-9a-zA-Z]+)\\}/g;\r\n/* eslint-disable */\r\nfunction format(message, ...args) {\r\n if (args.length === 1 && isObject(args[0])) {\r\n args = args[0];\r\n }\r\n if (!args || !args.hasOwnProperty) {\r\n args = {};\r\n }\r\n return message.replace(RE_ARGS, (match, identifier) => {\r\n return args.hasOwnProperty(identifier) ? args[identifier] : '';\r\n });\r\n}\r\nconst hasSymbol = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\r\nconst makeSymbol = (name) => hasSymbol ? Symbol(name) : name;\r\nconst generateFormatCacheKey = (locale, key, source) => friendlyJSONstringify({ l: locale, k: key, s: source });\r\nconst friendlyJSONstringify = (json) => JSON.stringify(json)\r\n .replace(/\\u2028/g, '\\\\u2028')\r\n .replace(/\\u2029/g, '\\\\u2029')\r\n .replace(/\\u0027/g, '\\\\u0027');\r\nconst isNumber = (val) => typeof val === 'number' && isFinite(val);\r\nconst isDate = (val) => toTypeString(val) === '[object Date]';\r\nconst isRegExp = (val) => toTypeString(val) === '[object RegExp]';\r\nconst isEmptyObject = (val) => isPlainObject(val) && Object.keys(val).length === 0;\r\nfunction warn(msg, err) {\r\n if (typeof console !== 'undefined') {\r\n console.warn(`[intlify] ` + msg);\r\n /* istanbul ignore if */\r\n if (err) {\r\n console.warn(err.stack);\r\n }\r\n }\r\n}\r\nconst assign = Object.assign;\r\nlet _globalThis;\r\nconst getGlobalThis = () => {\r\n // prettier-ignore\r\n return (_globalThis ||\r\n (_globalThis =\r\n typeof globalThis !== 'undefined'\r\n ? globalThis\r\n : typeof self !== 'undefined'\r\n ? self\r\n : typeof window !== 'undefined'\r\n ? window\r\n : typeof global !== 'undefined'\r\n ? global\r\n : {}));\r\n};\r\nfunction escapeHtml(rawText) {\r\n return rawText\r\n .replace(//g, '>')\r\n .replace(/\"/g, '"')\r\n .replace(/'/g, ''');\r\n}\r\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\r\nfunction hasOwn(obj, key) {\r\n return hasOwnProperty.call(obj, key);\r\n}\r\n/* eslint-enable */\r\n/**\r\n * Useful Utilities By Evan you\r\n * Modified by kazuya kawaguchi\r\n * MIT License\r\n * https://github.com/vuejs/vue-next/blob/master/packages/shared/src/index.ts\r\n * https://github.com/vuejs/vue-next/blob/master/packages/shared/src/codeframe.ts\r\n */\r\nconst isArray = Array.isArray;\r\nconst isFunction = (val) => typeof val === 'function';\r\nconst isString = (val) => typeof val === 'string';\r\nconst isBoolean = (val) => typeof val === 'boolean';\r\nconst isSymbol = (val) => typeof val === 'symbol';\r\nconst isObject = (val) => // eslint-disable-line\r\n val !== null && typeof val === 'object';\r\nconst isPromise = (val) => {\r\n return isObject(val) && isFunction(val.then) && isFunction(val.catch);\r\n};\r\nconst objectToString = Object.prototype.toString;\r\nconst toTypeString = (value) => objectToString.call(value);\r\nconst isPlainObject = (val) => toTypeString(val) === '[object Object]';\r\n// for converting list and named values to displayed strings.\r\nconst toDisplayString = (val) => {\r\n return val == null\r\n ? ''\r\n : isArray(val) || (isPlainObject(val) && val.toString === objectToString)\r\n ? JSON.stringify(val, null, 2)\r\n : String(val);\r\n};\r\nconst RANGE = 2;\r\nfunction generateCodeFrame(source, start = 0, end = source.length) {\r\n const lines = source.split(/\\r?\\n/);\r\n let count = 0;\r\n const res = [];\r\n for (let i = 0; i < lines.length; i++) {\r\n count += lines[i].length + 1;\r\n if (count >= start) {\r\n for (let j = i - RANGE; j <= i + RANGE || end > count; j++) {\r\n if (j < 0 || j >= lines.length)\r\n continue;\r\n const line = j + 1;\r\n res.push(`${line}${' '.repeat(3 - String(line).length)}| ${lines[j]}`);\r\n const lineLength = lines[j].length;\r\n if (j === i) {\r\n // push underline\r\n const pad = start - (count - lineLength) + 1;\r\n const length = Math.max(1, end > count ? lineLength - pad : end - start);\r\n res.push(` | ` + ' '.repeat(pad) + '^'.repeat(length));\r\n }\r\n else if (j > i) {\r\n if (end > count) {\r\n const length = Math.max(Math.min(end - count, lineLength), 1);\r\n res.push(` | ` + '^'.repeat(length));\r\n }\r\n count += lineLength + 1;\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n return res.join('\\n');\r\n}\n\n/**\r\n * Event emitter, forked from the below:\r\n * - original repository url: https://github.com/developit/mitt\r\n * - code url: https://github.com/developit/mitt/blob/master/src/index.ts\r\n * - author: Jason Miller (https://github.com/developit)\r\n * - license: MIT\r\n */\r\n/**\r\n * Create a event emitter\r\n *\r\n * @returns An event emitter\r\n */\r\nfunction createEmitter() {\r\n const events = new Map();\r\n const emitter = {\r\n events,\r\n on(event, handler) {\r\n const handlers = events.get(event);\r\n const added = handlers && handlers.push(handler);\r\n if (!added) {\r\n events.set(event, [handler]);\r\n }\r\n },\r\n off(event, handler) {\r\n const handlers = events.get(event);\r\n if (handlers) {\r\n handlers.splice(handlers.indexOf(handler) >>> 0, 1);\r\n }\r\n },\r\n emit(event, payload) {\r\n (events.get(event) || [])\r\n .slice()\r\n .map(handler => handler(payload));\r\n (events.get('*') || [])\r\n .slice()\r\n .map(handler => handler(event, payload));\r\n }\r\n };\r\n return emitter;\r\n}\n\nexport { assign, createEmitter, escapeHtml, format, friendlyJSONstringify, generateCodeFrame, generateFormatCacheKey, getGlobalThis, hasOwn, inBrowser, isArray, isBoolean, isDate, isEmptyObject, isFunction, isNumber, isObject, isPlainObject, isPromise, isRegExp, isString, isSymbol, makeSymbol, mark, measure, objectToString, toDisplayString, toTypeString, warn };\n","/*!\n * message-compiler v9.2.2\n * (c) 2022 kazuya kawaguchi\n * Released under the MIT License.\n */\nimport { format, assign, isString } from '@intlify/shared';\n\nconst CompileErrorCodes = {\r\n // tokenizer error codes\r\n EXPECTED_TOKEN: 1,\r\n INVALID_TOKEN_IN_PLACEHOLDER: 2,\r\n UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER: 3,\r\n UNKNOWN_ESCAPE_SEQUENCE: 4,\r\n INVALID_UNICODE_ESCAPE_SEQUENCE: 5,\r\n UNBALANCED_CLOSING_BRACE: 6,\r\n UNTERMINATED_CLOSING_BRACE: 7,\r\n EMPTY_PLACEHOLDER: 8,\r\n NOT_ALLOW_NEST_PLACEHOLDER: 9,\r\n INVALID_LINKED_FORMAT: 10,\r\n // parser error codes\r\n MUST_HAVE_MESSAGES_IN_PLURAL: 11,\r\n UNEXPECTED_EMPTY_LINKED_MODIFIER: 12,\r\n UNEXPECTED_EMPTY_LINKED_KEY: 13,\r\n UNEXPECTED_LEXICAL_ANALYSIS: 14,\r\n // Special value for higher-order compilers to pick up the last code\r\n // to avoid collision of error codes. This should always be kept as the last\r\n // item.\r\n __EXTEND_POINT__: 15\r\n};\r\n/** @internal */\r\nconst errorMessages = {\r\n // tokenizer error messages\r\n [CompileErrorCodes.EXPECTED_TOKEN]: `Expected token: '{0}'`,\r\n [CompileErrorCodes.INVALID_TOKEN_IN_PLACEHOLDER]: `Invalid token in placeholder: '{0}'`,\r\n [CompileErrorCodes.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER]: `Unterminated single quote in placeholder`,\r\n [CompileErrorCodes.UNKNOWN_ESCAPE_SEQUENCE]: `Unknown escape sequence: \\\\{0}`,\r\n [CompileErrorCodes.INVALID_UNICODE_ESCAPE_SEQUENCE]: `Invalid unicode escape sequence: {0}`,\r\n [CompileErrorCodes.UNBALANCED_CLOSING_BRACE]: `Unbalanced closing brace`,\r\n [CompileErrorCodes.UNTERMINATED_CLOSING_BRACE]: `Unterminated closing brace`,\r\n [CompileErrorCodes.EMPTY_PLACEHOLDER]: `Empty placeholder`,\r\n [CompileErrorCodes.NOT_ALLOW_NEST_PLACEHOLDER]: `Not allowed nest placeholder`,\r\n [CompileErrorCodes.INVALID_LINKED_FORMAT]: `Invalid linked format`,\r\n // parser error messages\r\n [CompileErrorCodes.MUST_HAVE_MESSAGES_IN_PLURAL]: `Plural must have messages`,\r\n [CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_MODIFIER]: `Unexpected empty linked modifier`,\r\n [CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_KEY]: `Unexpected empty linked key`,\r\n [CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS]: `Unexpected lexical analysis in token: '{0}'`\r\n};\r\nfunction createCompileError(code, loc, options = {}) {\r\n const { domain, messages, args } = options;\r\n const msg = (process.env.NODE_ENV !== 'production')\r\n ? format((messages || errorMessages)[code] || '', ...(args || []))\r\n : code;\r\n const error = new SyntaxError(String(msg));\r\n error.code = code;\r\n if (loc) {\r\n error.location = loc;\r\n }\r\n error.domain = domain;\r\n return error;\r\n}\r\n/** @internal */\r\nfunction defaultOnError(error) {\r\n throw error;\r\n}\n\nconst LocationStub = {\r\n start: { line: 1, column: 1, offset: 0 },\r\n end: { line: 1, column: 1, offset: 0 }\r\n};\r\nfunction createPosition(line, column, offset) {\r\n return { line, column, offset };\r\n}\r\nfunction createLocation(start, end, source) {\r\n const loc = { start, end };\r\n if (source != null) {\r\n loc.source = source;\r\n }\r\n return loc;\r\n}\n\nconst CHAR_SP = ' ';\r\nconst CHAR_CR = '\\r';\r\nconst CHAR_LF = '\\n';\r\nconst CHAR_LS = String.fromCharCode(0x2028);\r\nconst CHAR_PS = String.fromCharCode(0x2029);\r\nfunction createScanner(str) {\r\n const _buf = str;\r\n let _index = 0;\r\n let _line = 1;\r\n let _column = 1;\r\n let _peekOffset = 0;\r\n const isCRLF = (index) => _buf[index] === CHAR_CR && _buf[index + 1] === CHAR_LF;\r\n const isLF = (index) => _buf[index] === CHAR_LF;\r\n const isPS = (index) => _buf[index] === CHAR_PS;\r\n const isLS = (index) => _buf[index] === CHAR_LS;\r\n const isLineEnd = (index) => isCRLF(index) || isLF(index) || isPS(index) || isLS(index);\r\n const index = () => _index;\r\n const line = () => _line;\r\n const column = () => _column;\r\n const peekOffset = () => _peekOffset;\r\n const charAt = (offset) => isCRLF(offset) || isPS(offset) || isLS(offset) ? CHAR_LF : _buf[offset];\r\n const currentChar = () => charAt(_index);\r\n const currentPeek = () => charAt(_index + _peekOffset);\r\n function next() {\r\n _peekOffset = 0;\r\n if (isLineEnd(_index)) {\r\n _line++;\r\n _column = 0;\r\n }\r\n if (isCRLF(_index)) {\r\n _index++;\r\n }\r\n _index++;\r\n _column++;\r\n return _buf[_index];\r\n }\r\n function peek() {\r\n if (isCRLF(_index + _peekOffset)) {\r\n _peekOffset++;\r\n }\r\n _peekOffset++;\r\n return _buf[_index + _peekOffset];\r\n }\r\n function reset() {\r\n _index = 0;\r\n _line = 1;\r\n _column = 1;\r\n _peekOffset = 0;\r\n }\r\n function resetPeek(offset = 0) {\r\n _peekOffset = offset;\r\n }\r\n function skipToPeek() {\r\n const target = _index + _peekOffset;\r\n // eslint-disable-next-line no-unmodified-loop-condition\r\n while (target !== _index) {\r\n next();\r\n }\r\n _peekOffset = 0;\r\n }\r\n return {\r\n index,\r\n line,\r\n column,\r\n peekOffset,\r\n charAt,\r\n currentChar,\r\n currentPeek,\r\n next,\r\n peek,\r\n reset,\r\n resetPeek,\r\n skipToPeek\r\n };\r\n}\n\nconst EOF = undefined;\r\nconst LITERAL_DELIMITER = \"'\";\r\nconst ERROR_DOMAIN$1 = 'tokenizer';\r\nfunction createTokenizer(source, options = {}) {\r\n const location = options.location !== false;\r\n const _scnr = createScanner(source);\r\n const currentOffset = () => _scnr.index();\r\n const currentPosition = () => createPosition(_scnr.line(), _scnr.column(), _scnr.index());\r\n const _initLoc = currentPosition();\r\n const _initOffset = currentOffset();\r\n const _context = {\r\n currentType: 14 /* EOF */,\r\n offset: _initOffset,\r\n startLoc: _initLoc,\r\n endLoc: _initLoc,\r\n lastType: 14 /* EOF */,\r\n lastOffset: _initOffset,\r\n lastStartLoc: _initLoc,\r\n lastEndLoc: _initLoc,\r\n braceNest: 0,\r\n inLinked: false,\r\n text: ''\r\n };\r\n const context = () => _context;\r\n const { onError } = options;\r\n function emitError(code, pos, offset, ...args) {\r\n const ctx = context();\r\n pos.column += offset;\r\n pos.offset += offset;\r\n if (onError) {\r\n const loc = createLocation(ctx.startLoc, pos);\r\n const err = createCompileError(code, loc, {\r\n domain: ERROR_DOMAIN$1,\r\n args\r\n });\r\n onError(err);\r\n }\r\n }\r\n function getToken(context, type, value) {\r\n context.endLoc = currentPosition();\r\n context.currentType = type;\r\n const token = { type };\r\n if (location) {\r\n token.loc = createLocation(context.startLoc, context.endLoc);\r\n }\r\n if (value != null) {\r\n token.value = value;\r\n }\r\n return token;\r\n }\r\n const getEndToken = (context) => getToken(context, 14 /* EOF */);\r\n function eat(scnr, ch) {\r\n if (scnr.currentChar() === ch) {\r\n scnr.next();\r\n return ch;\r\n }\r\n else {\r\n emitError(CompileErrorCodes.EXPECTED_TOKEN, currentPosition(), 0, ch);\r\n return '';\r\n }\r\n }\r\n function peekSpaces(scnr) {\r\n let buf = '';\r\n while (scnr.currentPeek() === CHAR_SP || scnr.currentPeek() === CHAR_LF) {\r\n buf += scnr.currentPeek();\r\n scnr.peek();\r\n }\r\n return buf;\r\n }\r\n function skipSpaces(scnr) {\r\n const buf = peekSpaces(scnr);\r\n scnr.skipToPeek();\r\n return buf;\r\n }\r\n function isIdentifierStart(ch) {\r\n if (ch === EOF) {\r\n return false;\r\n }\r\n const cc = ch.charCodeAt(0);\r\n return ((cc >= 97 && cc <= 122) || // a-z\r\n (cc >= 65 && cc <= 90) || // A-Z\r\n cc === 95 // _\r\n );\r\n }\r\n function isNumberStart(ch) {\r\n if (ch === EOF) {\r\n return false;\r\n }\r\n const cc = ch.charCodeAt(0);\r\n return cc >= 48 && cc <= 57; // 0-9\r\n }\r\n function isNamedIdentifierStart(scnr, context) {\r\n const { currentType } = context;\r\n if (currentType !== 2 /* BraceLeft */) {\r\n return false;\r\n }\r\n peekSpaces(scnr);\r\n const ret = isIdentifierStart(scnr.currentPeek());\r\n scnr.resetPeek();\r\n return ret;\r\n }\r\n function isListIdentifierStart(scnr, context) {\r\n const { currentType } = context;\r\n if (currentType !== 2 /* BraceLeft */) {\r\n return false;\r\n }\r\n peekSpaces(scnr);\r\n const ch = scnr.currentPeek() === '-' ? scnr.peek() : scnr.currentPeek();\r\n const ret = isNumberStart(ch);\r\n scnr.resetPeek();\r\n return ret;\r\n }\r\n function isLiteralStart(scnr, context) {\r\n const { currentType } = context;\r\n if (currentType !== 2 /* BraceLeft */) {\r\n return false;\r\n }\r\n peekSpaces(scnr);\r\n const ret = scnr.currentPeek() === LITERAL_DELIMITER;\r\n scnr.resetPeek();\r\n return ret;\r\n }\r\n function isLinkedDotStart(scnr, context) {\r\n const { currentType } = context;\r\n if (currentType !== 8 /* LinkedAlias */) {\r\n return false;\r\n }\r\n peekSpaces(scnr);\r\n const ret = scnr.currentPeek() === \".\" /* LinkedDot */;\r\n scnr.resetPeek();\r\n return ret;\r\n }\r\n function isLinkedModifierStart(scnr, context) {\r\n const { currentType } = context;\r\n if (currentType !== 9 /* LinkedDot */) {\r\n return false;\r\n }\r\n peekSpaces(scnr);\r\n const ret = isIdentifierStart(scnr.currentPeek());\r\n scnr.resetPeek();\r\n return ret;\r\n }\r\n function isLinkedDelimiterStart(scnr, context) {\r\n const { currentType } = context;\r\n if (!(currentType === 8 /* LinkedAlias */ ||\r\n currentType === 12 /* LinkedModifier */)) {\r\n return false;\r\n }\r\n peekSpaces(scnr);\r\n const ret = scnr.currentPeek() === \":\" /* LinkedDelimiter */;\r\n scnr.resetPeek();\r\n return ret;\r\n }\r\n function isLinkedReferStart(scnr, context) {\r\n const { currentType } = context;\r\n if (currentType !== 10 /* LinkedDelimiter */) {\r\n return false;\r\n }\r\n const fn = () => {\r\n const ch = scnr.currentPeek();\r\n if (ch === \"{\" /* BraceLeft */) {\r\n return isIdentifierStart(scnr.peek());\r\n }\r\n else if (ch === \"@\" /* LinkedAlias */ ||\r\n ch === \"%\" /* Modulo */ ||\r\n ch === \"|\" /* Pipe */ ||\r\n ch === \":\" /* LinkedDelimiter */ ||\r\n ch === \".\" /* LinkedDot */ ||\r\n ch === CHAR_SP ||\r\n !ch) {\r\n return false;\r\n }\r\n else if (ch === CHAR_LF) {\r\n scnr.peek();\r\n return fn();\r\n }\r\n else {\r\n // other characters\r\n return isIdentifierStart(ch);\r\n }\r\n };\r\n const ret = fn();\r\n scnr.resetPeek();\r\n return ret;\r\n }\r\n function isPluralStart(scnr) {\r\n peekSpaces(scnr);\r\n const ret = scnr.currentPeek() === \"|\" /* Pipe */;\r\n scnr.resetPeek();\r\n return ret;\r\n }\r\n function detectModuloStart(scnr) {\r\n const spaces = peekSpaces(scnr);\r\n const ret = scnr.currentPeek() === \"%\" /* Modulo */ &&\r\n scnr.peek() === \"{\" /* BraceLeft */;\r\n scnr.resetPeek();\r\n return {\r\n isModulo: ret,\r\n hasSpace: spaces.length > 0\r\n };\r\n }\r\n function isTextStart(scnr, reset = true) {\r\n const fn = (hasSpace = false, prev = '', detectModulo = false) => {\r\n const ch = scnr.currentPeek();\r\n if (ch === \"{\" /* BraceLeft */) {\r\n return prev === \"%\" /* Modulo */ ? false : hasSpace;\r\n }\r\n else if (ch === \"@\" /* LinkedAlias */ || !ch) {\r\n return prev === \"%\" /* Modulo */ ? true : hasSpace;\r\n }\r\n else if (ch === \"%\" /* Modulo */) {\r\n scnr.peek();\r\n return fn(hasSpace, \"%\" /* Modulo */, true);\r\n }\r\n else if (ch === \"|\" /* Pipe */) {\r\n return prev === \"%\" /* Modulo */ || detectModulo\r\n ? true\r\n : !(prev === CHAR_SP || prev === CHAR_LF);\r\n }\r\n else if (ch === CHAR_SP) {\r\n scnr.peek();\r\n return fn(true, CHAR_SP, detectModulo);\r\n }\r\n else if (ch === CHAR_LF) {\r\n scnr.peek();\r\n return fn(true, CHAR_LF, detectModulo);\r\n }\r\n else {\r\n return true;\r\n }\r\n };\r\n const ret = fn();\r\n reset && scnr.resetPeek();\r\n return ret;\r\n }\r\n function takeChar(scnr, fn) {\r\n const ch = scnr.currentChar();\r\n if (ch === EOF) {\r\n return EOF;\r\n }\r\n if (fn(ch)) {\r\n scnr.next();\r\n return ch;\r\n }\r\n return null;\r\n }\r\n function takeIdentifierChar(scnr) {\r\n const closure = (ch) => {\r\n const cc = ch.charCodeAt(0);\r\n return ((cc >= 97 && cc <= 122) || // a-z\r\n (cc >= 65 && cc <= 90) || // A-Z\r\n (cc >= 48 && cc <= 57) || // 0-9\r\n cc === 95 || // _\r\n cc === 36 // $\r\n );\r\n };\r\n return takeChar(scnr, closure);\r\n }\r\n function takeDigit(scnr) {\r\n const closure = (ch) => {\r\n const cc = ch.charCodeAt(0);\r\n return cc >= 48 && cc <= 57; // 0-9\r\n };\r\n return takeChar(scnr, closure);\r\n }\r\n function takeHexDigit(scnr) {\r\n const closure = (ch) => {\r\n const cc = ch.charCodeAt(0);\r\n return ((cc >= 48 && cc <= 57) || // 0-9\r\n (cc >= 65 && cc <= 70) || // A-F\r\n (cc >= 97 && cc <= 102)); // a-f\r\n };\r\n return takeChar(scnr, closure);\r\n }\r\n function getDigits(scnr) {\r\n let ch = '';\r\n let num = '';\r\n while ((ch = takeDigit(scnr))) {\r\n num += ch;\r\n }\r\n return num;\r\n }\r\n function readModulo(scnr) {\r\n skipSpaces(scnr);\r\n const ch = scnr.currentChar();\r\n if (ch !== \"%\" /* Modulo */) {\r\n emitError(CompileErrorCodes.EXPECTED_TOKEN, currentPosition(), 0, ch);\r\n }\r\n scnr.next();\r\n return \"%\" /* Modulo */;\r\n }\r\n function readText(scnr) {\r\n let buf = '';\r\n while (true) {\r\n const ch = scnr.currentChar();\r\n if (ch === \"{\" /* BraceLeft */ ||\r\n ch === \"}\" /* BraceRight */ ||\r\n ch === \"@\" /* LinkedAlias */ ||\r\n ch === \"|\" /* Pipe */ ||\r\n !ch) {\r\n break;\r\n }\r\n else if (ch === \"%\" /* Modulo */) {\r\n if (isTextStart(scnr)) {\r\n buf += ch;\r\n scnr.next();\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n else if (ch === CHAR_SP || ch === CHAR_LF) {\r\n if (isTextStart(scnr)) {\r\n buf += ch;\r\n scnr.next();\r\n }\r\n else if (isPluralStart(scnr)) {\r\n break;\r\n }\r\n else {\r\n buf += ch;\r\n scnr.next();\r\n }\r\n }\r\n else {\r\n buf += ch;\r\n scnr.next();\r\n }\r\n }\r\n return buf;\r\n }\r\n function readNamedIdentifier(scnr) {\r\n skipSpaces(scnr);\r\n let ch = '';\r\n let name = '';\r\n while ((ch = takeIdentifierChar(scnr))) {\r\n name += ch;\r\n }\r\n if (scnr.currentChar() === EOF) {\r\n emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\r\n }\r\n return name;\r\n }\r\n function readListIdentifier(scnr) {\r\n skipSpaces(scnr);\r\n let value = '';\r\n if (scnr.currentChar() === '-') {\r\n scnr.next();\r\n value += `-${getDigits(scnr)}`;\r\n }\r\n else {\r\n value += getDigits(scnr);\r\n }\r\n if (scnr.currentChar() === EOF) {\r\n emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\r\n }\r\n return value;\r\n }\r\n function readLiteral(scnr) {\r\n skipSpaces(scnr);\r\n eat(scnr, `\\'`);\r\n let ch = '';\r\n let literal = '';\r\n const fn = (x) => x !== LITERAL_DELIMITER && x !== CHAR_LF;\r\n while ((ch = takeChar(scnr, fn))) {\r\n if (ch === '\\\\') {\r\n literal += readEscapeSequence(scnr);\r\n }\r\n else {\r\n literal += ch;\r\n }\r\n }\r\n const current = scnr.currentChar();\r\n if (current === CHAR_LF || current === EOF) {\r\n emitError(CompileErrorCodes.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER, currentPosition(), 0);\r\n // TODO: Is it correct really?\r\n if (current === CHAR_LF) {\r\n scnr.next();\r\n eat(scnr, `\\'`);\r\n }\r\n return literal;\r\n }\r\n eat(scnr, `\\'`);\r\n return literal;\r\n }\r\n function readEscapeSequence(scnr) {\r\n const ch = scnr.currentChar();\r\n switch (ch) {\r\n case '\\\\':\r\n case `\\'`:\r\n scnr.next();\r\n return `\\\\${ch}`;\r\n case 'u':\r\n return readUnicodeEscapeSequence(scnr, ch, 4);\r\n case 'U':\r\n return readUnicodeEscapeSequence(scnr, ch, 6);\r\n default:\r\n emitError(CompileErrorCodes.UNKNOWN_ESCAPE_SEQUENCE, currentPosition(), 0, ch);\r\n return '';\r\n }\r\n }\r\n function readUnicodeEscapeSequence(scnr, unicode, digits) {\r\n eat(scnr, unicode);\r\n let sequence = '';\r\n for (let i = 0; i < digits; i++) {\r\n const ch = takeHexDigit(scnr);\r\n if (!ch) {\r\n emitError(CompileErrorCodes.INVALID_UNICODE_ESCAPE_SEQUENCE, currentPosition(), 0, `\\\\${unicode}${sequence}${scnr.currentChar()}`);\r\n break;\r\n }\r\n sequence += ch;\r\n }\r\n return `\\\\${unicode}${sequence}`;\r\n }\r\n function readInvalidIdentifier(scnr) {\r\n skipSpaces(scnr);\r\n let ch = '';\r\n let identifiers = '';\r\n const closure = (ch) => ch !== \"{\" /* BraceLeft */ &&\r\n ch !== \"}\" /* BraceRight */ &&\r\n ch !== CHAR_SP &&\r\n ch !== CHAR_LF;\r\n while ((ch = takeChar(scnr, closure))) {\r\n identifiers += ch;\r\n }\r\n return identifiers;\r\n }\r\n function readLinkedModifier(scnr) {\r\n let ch = '';\r\n let name = '';\r\n while ((ch = takeIdentifierChar(scnr))) {\r\n name += ch;\r\n }\r\n return name;\r\n }\r\n function readLinkedRefer(scnr) {\r\n const fn = (detect = false, buf) => {\r\n const ch = scnr.currentChar();\r\n if (ch === \"{\" /* BraceLeft */ ||\r\n ch === \"%\" /* Modulo */ ||\r\n ch === \"@\" /* LinkedAlias */ ||\r\n ch === \"|\" /* Pipe */ ||\r\n !ch) {\r\n return buf;\r\n }\r\n else if (ch === CHAR_SP) {\r\n return buf;\r\n }\r\n else if (ch === CHAR_LF) {\r\n buf += ch;\r\n scnr.next();\r\n return fn(detect, buf);\r\n }\r\n else {\r\n buf += ch;\r\n scnr.next();\r\n return fn(true, buf);\r\n }\r\n };\r\n return fn(false, '');\r\n }\r\n function readPlural(scnr) {\r\n skipSpaces(scnr);\r\n const plural = eat(scnr, \"|\" /* Pipe */);\r\n skipSpaces(scnr);\r\n return plural;\r\n }\r\n // TODO: We need refactoring of token parsing ...\r\n function readTokenInPlaceholder(scnr, context) {\r\n let token = null;\r\n const ch = scnr.currentChar();\r\n switch (ch) {\r\n case \"{\" /* BraceLeft */:\r\n if (context.braceNest >= 1) {\r\n emitError(CompileErrorCodes.NOT_ALLOW_NEST_PLACEHOLDER, currentPosition(), 0);\r\n }\r\n scnr.next();\r\n token = getToken(context, 2 /* BraceLeft */, \"{\" /* BraceLeft */);\r\n skipSpaces(scnr);\r\n context.braceNest++;\r\n return token;\r\n case \"}\" /* BraceRight */:\r\n if (context.braceNest > 0 &&\r\n context.currentType === 2 /* BraceLeft */) {\r\n emitError(CompileErrorCodes.EMPTY_PLACEHOLDER, currentPosition(), 0);\r\n }\r\n scnr.next();\r\n token = getToken(context, 3 /* BraceRight */, \"}\" /* BraceRight */);\r\n context.braceNest--;\r\n context.braceNest > 0 && skipSpaces(scnr);\r\n if (context.inLinked && context.braceNest === 0) {\r\n context.inLinked = false;\r\n }\r\n return token;\r\n case \"@\" /* LinkedAlias */:\r\n if (context.braceNest > 0) {\r\n emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\r\n }\r\n token = readTokenInLinked(scnr, context) || getEndToken(context);\r\n context.braceNest = 0;\r\n return token;\r\n default:\r\n let validNamedIdentifier = true;\r\n let validListIdentifier = true;\r\n let validLiteral = true;\r\n if (isPluralStart(scnr)) {\r\n if (context.braceNest > 0) {\r\n emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\r\n }\r\n token = getToken(context, 1 /* Pipe */, readPlural(scnr));\r\n // reset\r\n context.braceNest = 0;\r\n context.inLinked = false;\r\n return token;\r\n }\r\n if (context.braceNest > 0 &&\r\n (context.currentType === 5 /* Named */ ||\r\n context.currentType === 6 /* List */ ||\r\n context.currentType === 7 /* Literal */)) {\r\n emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\r\n context.braceNest = 0;\r\n return readToken(scnr, context);\r\n }\r\n if ((validNamedIdentifier = isNamedIdentifierStart(scnr, context))) {\r\n token = getToken(context, 5 /* Named */, readNamedIdentifier(scnr));\r\n skipSpaces(scnr);\r\n return token;\r\n }\r\n if ((validListIdentifier = isListIdentifierStart(scnr, context))) {\r\n token = getToken(context, 6 /* List */, readListIdentifier(scnr));\r\n skipSpaces(scnr);\r\n return token;\r\n }\r\n if ((validLiteral = isLiteralStart(scnr, context))) {\r\n token = getToken(context, 7 /* Literal */, readLiteral(scnr));\r\n skipSpaces(scnr);\r\n return token;\r\n }\r\n if (!validNamedIdentifier && !validListIdentifier && !validLiteral) {\r\n // TODO: we should be re-designed invalid cases, when we will extend message syntax near the future ...\r\n token = getToken(context, 13 /* InvalidPlace */, readInvalidIdentifier(scnr));\r\n emitError(CompileErrorCodes.INVALID_TOKEN_IN_PLACEHOLDER, currentPosition(), 0, token.value);\r\n skipSpaces(scnr);\r\n return token;\r\n }\r\n break;\r\n }\r\n return token;\r\n }\r\n // TODO: We need refactoring of token parsing ...\r\n function readTokenInLinked(scnr, context) {\r\n const { currentType } = context;\r\n let token = null;\r\n const ch = scnr.currentChar();\r\n if ((currentType === 8 /* LinkedAlias */ ||\r\n currentType === 9 /* LinkedDot */ ||\r\n currentType === 12 /* LinkedModifier */ ||\r\n currentType === 10 /* LinkedDelimiter */) &&\r\n (ch === CHAR_LF || ch === CHAR_SP)) {\r\n emitError(CompileErrorCodes.INVALID_LINKED_FORMAT, currentPosition(), 0);\r\n }\r\n switch (ch) {\r\n case \"@\" /* LinkedAlias */:\r\n scnr.next();\r\n token = getToken(context, 8 /* LinkedAlias */, \"@\" /* LinkedAlias */);\r\n context.inLinked = true;\r\n return token;\r\n case \".\" /* LinkedDot */:\r\n skipSpaces(scnr);\r\n scnr.next();\r\n return getToken(context, 9 /* LinkedDot */, \".\" /* LinkedDot */);\r\n case \":\" /* LinkedDelimiter */:\r\n skipSpaces(scnr);\r\n scnr.next();\r\n return getToken(context, 10 /* LinkedDelimiter */, \":\" /* LinkedDelimiter */);\r\n default:\r\n if (isPluralStart(scnr)) {\r\n token = getToken(context, 1 /* Pipe */, readPlural(scnr));\r\n // reset\r\n context.braceNest = 0;\r\n context.inLinked = false;\r\n return token;\r\n }\r\n if (isLinkedDotStart(scnr, context) ||\r\n isLinkedDelimiterStart(scnr, context)) {\r\n skipSpaces(scnr);\r\n return readTokenInLinked(scnr, context);\r\n }\r\n if (isLinkedModifierStart(scnr, context)) {\r\n skipSpaces(scnr);\r\n return getToken(context, 12 /* LinkedModifier */, readLinkedModifier(scnr));\r\n }\r\n if (isLinkedReferStart(scnr, context)) {\r\n skipSpaces(scnr);\r\n if (ch === \"{\" /* BraceLeft */) {\r\n // scan the placeholder\r\n return readTokenInPlaceholder(scnr, context) || token;\r\n }\r\n else {\r\n return getToken(context, 11 /* LinkedKey */, readLinkedRefer(scnr));\r\n }\r\n }\r\n if (currentType === 8 /* LinkedAlias */) {\r\n emitError(CompileErrorCodes.INVALID_LINKED_FORMAT, currentPosition(), 0);\r\n }\r\n context.braceNest = 0;\r\n context.inLinked = false;\r\n return readToken(scnr, context);\r\n }\r\n }\r\n // TODO: We need refactoring of token parsing ...\r\n function readToken(scnr, context) {\r\n let token = { type: 14 /* EOF */ };\r\n if (context.braceNest > 0) {\r\n return readTokenInPlaceholder(scnr, context) || getEndToken(context);\r\n }\r\n if (context.inLinked) {\r\n return readTokenInLinked(scnr, context) || getEndToken(context);\r\n }\r\n const ch = scnr.currentChar();\r\n switch (ch) {\r\n case \"{\" /* BraceLeft */:\r\n return readTokenInPlaceholder(scnr, context) || getEndToken(context);\r\n case \"}\" /* BraceRight */:\r\n emitError(CompileErrorCodes.UNBALANCED_CLOSING_BRACE, currentPosition(), 0);\r\n scnr.next();\r\n return getToken(context, 3 /* BraceRight */, \"}\" /* BraceRight */);\r\n case \"@\" /* LinkedAlias */:\r\n return readTokenInLinked(scnr, context) || getEndToken(context);\r\n default:\r\n if (isPluralStart(scnr)) {\r\n token = getToken(context, 1 /* Pipe */, readPlural(scnr));\r\n // reset\r\n context.braceNest = 0;\r\n context.inLinked = false;\r\n return token;\r\n }\r\n const { isModulo, hasSpace } = detectModuloStart(scnr);\r\n if (isModulo) {\r\n return hasSpace\r\n ? getToken(context, 0 /* Text */, readText(scnr))\r\n : getToken(context, 4 /* Modulo */, readModulo(scnr));\r\n }\r\n if (isTextStart(scnr)) {\r\n return getToken(context, 0 /* Text */, readText(scnr));\r\n }\r\n break;\r\n }\r\n return token;\r\n }\r\n function nextToken() {\r\n const { currentType, offset, startLoc, endLoc } = _context;\r\n _context.lastType = currentType;\r\n _context.lastOffset = offset;\r\n _context.lastStartLoc = startLoc;\r\n _context.lastEndLoc = endLoc;\r\n _context.offset = currentOffset();\r\n _context.startLoc = currentPosition();\r\n if (_scnr.currentChar() === EOF) {\r\n return getToken(_context, 14 /* EOF */);\r\n }\r\n return readToken(_scnr, _context);\r\n }\r\n return {\r\n nextToken,\r\n currentOffset,\r\n currentPosition,\r\n context\r\n };\r\n}\n\nconst ERROR_DOMAIN = 'parser';\r\n// Backslash backslash, backslash quote, uHHHH, UHHHHHH.\r\nconst KNOWN_ESCAPES = /(?:\\\\\\\\|\\\\'|\\\\u([0-9a-fA-F]{4})|\\\\U([0-9a-fA-F]{6}))/g;\r\nfunction fromEscapeSequence(match, codePoint4, codePoint6) {\r\n switch (match) {\r\n case `\\\\\\\\`:\r\n return `\\\\`;\r\n case `\\\\\\'`:\r\n return `\\'`;\r\n default: {\r\n const codePoint = parseInt(codePoint4 || codePoint6, 16);\r\n if (codePoint <= 0xd7ff || codePoint >= 0xe000) {\r\n return String.fromCodePoint(codePoint);\r\n }\r\n // invalid ...\r\n // Replace them with U+FFFD REPLACEMENT CHARACTER.\r\n return '�';\r\n }\r\n }\r\n}\r\nfunction createParser(options = {}) {\r\n const location = options.location !== false;\r\n const { onError } = options;\r\n function emitError(tokenzer, code, start, offset, ...args) {\r\n const end = tokenzer.currentPosition();\r\n end.offset += offset;\r\n end.column += offset;\r\n if (onError) {\r\n const loc = createLocation(start, end);\r\n const err = createCompileError(code, loc, {\r\n domain: ERROR_DOMAIN,\r\n args\r\n });\r\n onError(err);\r\n }\r\n }\r\n function startNode(type, offset, loc) {\r\n const node = {\r\n type,\r\n start: offset,\r\n end: offset\r\n };\r\n if (location) {\r\n node.loc = { start: loc, end: loc };\r\n }\r\n return node;\r\n }\r\n function endNode(node, offset, pos, type) {\r\n node.end = offset;\r\n if (type) {\r\n node.type = type;\r\n }\r\n if (location && node.loc) {\r\n node.loc.end = pos;\r\n }\r\n }\r\n function parseText(tokenizer, value) {\r\n const context = tokenizer.context();\r\n const node = startNode(3 /* Text */, context.offset, context.startLoc);\r\n node.value = value;\r\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return node;\r\n }\r\n function parseList(tokenizer, index) {\r\n const context = tokenizer.context();\r\n const { lastOffset: offset, lastStartLoc: loc } = context; // get brace left loc\r\n const node = startNode(5 /* List */, offset, loc);\r\n node.index = parseInt(index, 10);\r\n tokenizer.nextToken(); // skip brach right\r\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return node;\r\n }\r\n function parseNamed(tokenizer, key) {\r\n const context = tokenizer.context();\r\n const { lastOffset: offset, lastStartLoc: loc } = context; // get brace left loc\r\n const node = startNode(4 /* Named */, offset, loc);\r\n node.key = key;\r\n tokenizer.nextToken(); // skip brach right\r\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return node;\r\n }\r\n function parseLiteral(tokenizer, value) {\r\n const context = tokenizer.context();\r\n const { lastOffset: offset, lastStartLoc: loc } = context; // get brace left loc\r\n const node = startNode(9 /* Literal */, offset, loc);\r\n node.value = value.replace(KNOWN_ESCAPES, fromEscapeSequence);\r\n tokenizer.nextToken(); // skip brach right\r\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return node;\r\n }\r\n function parseLinkedModifier(tokenizer) {\r\n const token = tokenizer.nextToken();\r\n const context = tokenizer.context();\r\n const { lastOffset: offset, lastStartLoc: loc } = context; // get linked dot loc\r\n const node = startNode(8 /* LinkedModifier */, offset, loc);\r\n if (token.type !== 12 /* LinkedModifier */) {\r\n // empty modifier\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_MODIFIER, context.lastStartLoc, 0);\r\n node.value = '';\r\n endNode(node, offset, loc);\r\n return {\r\n nextConsumeToken: token,\r\n node\r\n };\r\n }\r\n // check token\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n node.value = token.value || '';\r\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return {\r\n node\r\n };\r\n }\r\n function parseLinkedKey(tokenizer, value) {\r\n const context = tokenizer.context();\r\n const node = startNode(7 /* LinkedKey */, context.offset, context.startLoc);\r\n node.value = value;\r\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return node;\r\n }\r\n function parseLinked(tokenizer) {\r\n const context = tokenizer.context();\r\n const linkedNode = startNode(6 /* Linked */, context.offset, context.startLoc);\r\n let token = tokenizer.nextToken();\r\n if (token.type === 9 /* LinkedDot */) {\r\n const parsed = parseLinkedModifier(tokenizer);\r\n linkedNode.modifier = parsed.node;\r\n token = parsed.nextConsumeToken || tokenizer.nextToken();\r\n }\r\n // asset check token\r\n if (token.type !== 10 /* LinkedDelimiter */) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n token = tokenizer.nextToken();\r\n // skip brace left\r\n if (token.type === 2 /* BraceLeft */) {\r\n token = tokenizer.nextToken();\r\n }\r\n switch (token.type) {\r\n case 11 /* LinkedKey */:\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n linkedNode.key = parseLinkedKey(tokenizer, token.value || '');\r\n break;\r\n case 5 /* Named */:\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n linkedNode.key = parseNamed(tokenizer, token.value || '');\r\n break;\r\n case 6 /* List */:\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n linkedNode.key = parseList(tokenizer, token.value || '');\r\n break;\r\n case 7 /* Literal */:\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n linkedNode.key = parseLiteral(tokenizer, token.value || '');\r\n break;\r\n default:\r\n // empty key\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_KEY, context.lastStartLoc, 0);\r\n const nextContext = tokenizer.context();\r\n const emptyLinkedKeyNode = startNode(7 /* LinkedKey */, nextContext.offset, nextContext.startLoc);\r\n emptyLinkedKeyNode.value = '';\r\n endNode(emptyLinkedKeyNode, nextContext.offset, nextContext.startLoc);\r\n linkedNode.key = emptyLinkedKeyNode;\r\n endNode(linkedNode, nextContext.offset, nextContext.startLoc);\r\n return {\r\n nextConsumeToken: token,\r\n node: linkedNode\r\n };\r\n }\r\n endNode(linkedNode, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return {\r\n node: linkedNode\r\n };\r\n }\r\n function parseMessage(tokenizer) {\r\n const context = tokenizer.context();\r\n const startOffset = context.currentType === 1 /* Pipe */\r\n ? tokenizer.currentOffset()\r\n : context.offset;\r\n const startLoc = context.currentType === 1 /* Pipe */\r\n ? context.endLoc\r\n : context.startLoc;\r\n const node = startNode(2 /* Message */, startOffset, startLoc);\r\n node.items = [];\r\n let nextToken = null;\r\n do {\r\n const token = nextToken || tokenizer.nextToken();\r\n nextToken = null;\r\n switch (token.type) {\r\n case 0 /* Text */:\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n node.items.push(parseText(tokenizer, token.value || ''));\r\n break;\r\n case 6 /* List */:\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n node.items.push(parseList(tokenizer, token.value || ''));\r\n break;\r\n case 5 /* Named */:\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n node.items.push(parseNamed(tokenizer, token.value || ''));\r\n break;\r\n case 7 /* Literal */:\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n node.items.push(parseLiteral(tokenizer, token.value || ''));\r\n break;\r\n case 8 /* LinkedAlias */:\r\n const parsed = parseLinked(tokenizer);\r\n node.items.push(parsed.node);\r\n nextToken = parsed.nextConsumeToken || null;\r\n break;\r\n }\r\n } while (context.currentType !== 14 /* EOF */ &&\r\n context.currentType !== 1 /* Pipe */);\r\n // adjust message node loc\r\n const endOffset = context.currentType === 1 /* Pipe */\r\n ? context.lastOffset\r\n : tokenizer.currentOffset();\r\n const endLoc = context.currentType === 1 /* Pipe */\r\n ? context.lastEndLoc\r\n : tokenizer.currentPosition();\r\n endNode(node, endOffset, endLoc);\r\n return node;\r\n }\r\n function parsePlural(tokenizer, offset, loc, msgNode) {\r\n const context = tokenizer.context();\r\n let hasEmptyMessage = msgNode.items.length === 0;\r\n const node = startNode(1 /* Plural */, offset, loc);\r\n node.cases = [];\r\n node.cases.push(msgNode);\r\n do {\r\n const msg = parseMessage(tokenizer);\r\n if (!hasEmptyMessage) {\r\n hasEmptyMessage = msg.items.length === 0;\r\n }\r\n node.cases.push(msg);\r\n } while (context.currentType !== 14 /* EOF */);\r\n if (hasEmptyMessage) {\r\n emitError(tokenizer, CompileErrorCodes.MUST_HAVE_MESSAGES_IN_PLURAL, loc, 0);\r\n }\r\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return node;\r\n }\r\n function parseResource(tokenizer) {\r\n const context = tokenizer.context();\r\n const { offset, startLoc } = context;\r\n const msgNode = parseMessage(tokenizer);\r\n if (context.currentType === 14 /* EOF */) {\r\n return msgNode;\r\n }\r\n else {\r\n return parsePlural(tokenizer, offset, startLoc, msgNode);\r\n }\r\n }\r\n function parse(source) {\r\n const tokenizer = createTokenizer(source, assign({}, options));\r\n const context = tokenizer.context();\r\n const node = startNode(0 /* Resource */, context.offset, context.startLoc);\r\n if (location && node.loc) {\r\n node.loc.source = source;\r\n }\r\n node.body = parseResource(tokenizer);\r\n // assert whether achieved to EOF\r\n if (context.currentType !== 14 /* EOF */) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, source[context.offset] || '');\r\n }\r\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return node;\r\n }\r\n return { parse };\r\n}\r\nfunction getTokenCaption(token) {\r\n if (token.type === 14 /* EOF */) {\r\n return 'EOF';\r\n }\r\n const name = (token.value || '').replace(/\\r?\\n/gu, '\\\\n');\r\n return name.length > 10 ? name.slice(0, 9) + '…' : name;\r\n}\n\nfunction createTransformer(ast, options = {} // eslint-disable-line\r\n) {\r\n const _context = {\r\n ast,\r\n helpers: new Set()\r\n };\r\n const context = () => _context;\r\n const helper = (name) => {\r\n _context.helpers.add(name);\r\n return name;\r\n };\r\n return { context, helper };\r\n}\r\nfunction traverseNodes(nodes, transformer) {\r\n for (let i = 0; i < nodes.length; i++) {\r\n traverseNode(nodes[i], transformer);\r\n }\r\n}\r\nfunction traverseNode(node, transformer) {\r\n // TODO: if we need pre-hook of transform, should be implemented to here\r\n switch (node.type) {\r\n case 1 /* Plural */:\r\n traverseNodes(node.cases, transformer);\r\n transformer.helper(\"plural\" /* PLURAL */);\r\n break;\r\n case 2 /* Message */:\r\n traverseNodes(node.items, transformer);\r\n break;\r\n case 6 /* Linked */:\r\n const linked = node;\r\n traverseNode(linked.key, transformer);\r\n transformer.helper(\"linked\" /* LINKED */);\r\n transformer.helper(\"type\" /* TYPE */);\r\n break;\r\n case 5 /* List */:\r\n transformer.helper(\"interpolate\" /* INTERPOLATE */);\r\n transformer.helper(\"list\" /* LIST */);\r\n break;\r\n case 4 /* Named */:\r\n transformer.helper(\"interpolate\" /* INTERPOLATE */);\r\n transformer.helper(\"named\" /* NAMED */);\r\n break;\r\n }\r\n // TODO: if we need post-hook of transform, should be implemented to here\r\n}\r\n// transform AST\r\nfunction transform(ast, options = {} // eslint-disable-line\r\n) {\r\n const transformer = createTransformer(ast);\r\n transformer.helper(\"normalize\" /* NORMALIZE */);\r\n // traverse\r\n ast.body && traverseNode(ast.body, transformer);\r\n // set meta information\r\n const context = transformer.context();\r\n ast.helpers = Array.from(context.helpers);\r\n}\n\nfunction createCodeGenerator(ast, options) {\r\n const { sourceMap, filename, breakLineCode, needIndent: _needIndent } = options;\r\n const _context = {\r\n source: ast.loc.source,\r\n filename,\r\n code: '',\r\n column: 1,\r\n line: 1,\r\n offset: 0,\r\n map: undefined,\r\n breakLineCode,\r\n needIndent: _needIndent,\r\n indentLevel: 0\r\n };\r\n const context = () => _context;\r\n function push(code, node) {\r\n _context.code += code;\r\n }\r\n function _newline(n, withBreakLine = true) {\r\n const _breakLineCode = withBreakLine ? breakLineCode : '';\r\n push(_needIndent ? _breakLineCode + ` `.repeat(n) : _breakLineCode);\r\n }\r\n function indent(withNewLine = true) {\r\n const level = ++_context.indentLevel;\r\n withNewLine && _newline(level);\r\n }\r\n function deindent(withNewLine = true) {\r\n const level = --_context.indentLevel;\r\n withNewLine && _newline(level);\r\n }\r\n function newline() {\r\n _newline(_context.indentLevel);\r\n }\r\n const helper = (key) => `_${key}`;\r\n const needIndent = () => _context.needIndent;\r\n return {\r\n context,\r\n push,\r\n indent,\r\n deindent,\r\n newline,\r\n helper,\r\n needIndent\r\n };\r\n}\r\nfunction generateLinkedNode(generator, node) {\r\n const { helper } = generator;\r\n generator.push(`${helper(\"linked\" /* LINKED */)}(`);\r\n generateNode(generator, node.key);\r\n if (node.modifier) {\r\n generator.push(`, `);\r\n generateNode(generator, node.modifier);\r\n generator.push(`, _type`);\r\n }\r\n else {\r\n generator.push(`, undefined, _type`);\r\n }\r\n generator.push(`)`);\r\n}\r\nfunction generateMessageNode(generator, node) {\r\n const { helper, needIndent } = generator;\r\n generator.push(`${helper(\"normalize\" /* NORMALIZE */)}([`);\r\n generator.indent(needIndent());\r\n const length = node.items.length;\r\n for (let i = 0; i < length; i++) {\r\n generateNode(generator, node.items[i]);\r\n if (i === length - 1) {\r\n break;\r\n }\r\n generator.push(', ');\r\n }\r\n generator.deindent(needIndent());\r\n generator.push('])');\r\n}\r\nfunction generatePluralNode(generator, node) {\r\n const { helper, needIndent } = generator;\r\n if (node.cases.length > 1) {\r\n generator.push(`${helper(\"plural\" /* PLURAL */)}([`);\r\n generator.indent(needIndent());\r\n const length = node.cases.length;\r\n for (let i = 0; i < length; i++) {\r\n generateNode(generator, node.cases[i]);\r\n if (i === length - 1) {\r\n break;\r\n }\r\n generator.push(', ');\r\n }\r\n generator.deindent(needIndent());\r\n generator.push(`])`);\r\n }\r\n}\r\nfunction generateResource(generator, node) {\r\n if (node.body) {\r\n generateNode(generator, node.body);\r\n }\r\n else {\r\n generator.push('null');\r\n }\r\n}\r\nfunction generateNode(generator, node) {\r\n const { helper } = generator;\r\n switch (node.type) {\r\n case 0 /* Resource */:\r\n generateResource(generator, node);\r\n break;\r\n case 1 /* Plural */:\r\n generatePluralNode(generator, node);\r\n break;\r\n case 2 /* Message */:\r\n generateMessageNode(generator, node);\r\n break;\r\n case 6 /* Linked */:\r\n generateLinkedNode(generator, node);\r\n break;\r\n case 8 /* LinkedModifier */:\r\n generator.push(JSON.stringify(node.value), node);\r\n break;\r\n case 7 /* LinkedKey */:\r\n generator.push(JSON.stringify(node.value), node);\r\n break;\r\n case 5 /* List */:\r\n generator.push(`${helper(\"interpolate\" /* INTERPOLATE */)}(${helper(\"list\" /* LIST */)}(${node.index}))`, node);\r\n break;\r\n case 4 /* Named */:\r\n generator.push(`${helper(\"interpolate\" /* INTERPOLATE */)}(${helper(\"named\" /* NAMED */)}(${JSON.stringify(node.key)}))`, node);\r\n break;\r\n case 9 /* Literal */:\r\n generator.push(JSON.stringify(node.value), node);\r\n break;\r\n case 3 /* Text */:\r\n generator.push(JSON.stringify(node.value), node);\r\n break;\r\n default:\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n throw new Error(`unhandled codegen node type: ${node.type}`);\r\n }\r\n }\r\n}\r\n// generate code from AST\r\nconst generate = (ast, options = {} // eslint-disable-line\r\n) => {\r\n const mode = isString(options.mode) ? options.mode : 'normal';\r\n const filename = isString(options.filename)\r\n ? options.filename\r\n : 'message.intl';\r\n const sourceMap = !!options.sourceMap;\r\n // prettier-ignore\r\n const breakLineCode = options.breakLineCode != null\r\n ? options.breakLineCode\r\n : mode === 'arrow'\r\n ? ';'\r\n : '\\n';\r\n const needIndent = options.needIndent ? options.needIndent : mode !== 'arrow';\r\n const helpers = ast.helpers || [];\r\n const generator = createCodeGenerator(ast, {\r\n mode,\r\n filename,\r\n sourceMap,\r\n breakLineCode,\r\n needIndent\r\n });\r\n generator.push(mode === 'normal' ? `function __msg__ (ctx) {` : `(ctx) => {`);\r\n generator.indent(needIndent);\r\n if (helpers.length > 0) {\r\n generator.push(`const { ${helpers.map(s => `${s}: _${s}`).join(', ')} } = ctx`);\r\n generator.newline();\r\n }\r\n generator.push(`return `);\r\n generateNode(generator, ast);\r\n generator.deindent(needIndent);\r\n generator.push(`}`);\r\n const { code, map } = generator.context();\r\n return {\r\n ast,\r\n code,\r\n map: map ? map.toJSON() : undefined // eslint-disable-line @typescript-eslint/no-explicit-any\r\n };\r\n};\n\nfunction baseCompile(source, options = {}) {\r\n const assignedOptions = assign({}, options);\r\n // parse source codes\r\n const parser = createParser(assignedOptions);\r\n const ast = parser.parse(source);\r\n // transform ASTs\r\n transform(ast, assignedOptions);\r\n // generate javascript codes\r\n return generate(ast, assignedOptions);\r\n}\n\nexport { CompileErrorCodes, ERROR_DOMAIN, LocationStub, baseCompile, createCompileError, createLocation, createParser, createPosition, defaultOnError, errorMessages };\n","/*!\n * devtools-if v9.2.2\n * (c) 2022 kazuya kawaguchi\n * Released under the MIT License.\n */\nconst IntlifyDevToolsHooks = {\r\n I18nInit: 'i18n:init',\r\n FunctionTranslate: 'function:translate'\r\n};\n\nexport { IntlifyDevToolsHooks };\n","/*!\n * core-base v9.2.2\n * (c) 2022 kazuya kawaguchi\n * Released under the MIT License.\n */\nimport { isObject, isString, isFunction, isNumber, isPlainObject, toDisplayString, isArray, format, isBoolean, assign, isRegExp, warn, escapeHtml, inBrowser, mark, measure, isEmptyObject, generateCodeFrame, generateFormatCacheKey, isDate, getGlobalThis } from '@intlify/shared';\nimport { defaultOnError, baseCompile, CompileErrorCodes, createCompileError } from '@intlify/message-compiler';\nexport { CompileErrorCodes, createCompileError } from '@intlify/message-compiler';\nimport { IntlifyDevToolsHooks } from '@intlify/devtools-if';\n\nconst pathStateMachine = [];\r\npathStateMachine[0 /* BEFORE_PATH */] = {\r\n [\"w\" /* WORKSPACE */]: [0 /* BEFORE_PATH */],\r\n [\"i\" /* IDENT */]: [3 /* IN_IDENT */, 0 /* APPEND */],\r\n [\"[\" /* LEFT_BRACKET */]: [4 /* IN_SUB_PATH */],\r\n [\"o\" /* END_OF_FAIL */]: [7 /* AFTER_PATH */]\r\n};\r\npathStateMachine[1 /* IN_PATH */] = {\r\n [\"w\" /* WORKSPACE */]: [1 /* IN_PATH */],\r\n [\".\" /* DOT */]: [2 /* BEFORE_IDENT */],\r\n [\"[\" /* LEFT_BRACKET */]: [4 /* IN_SUB_PATH */],\r\n [\"o\" /* END_OF_FAIL */]: [7 /* AFTER_PATH */]\r\n};\r\npathStateMachine[2 /* BEFORE_IDENT */] = {\r\n [\"w\" /* WORKSPACE */]: [2 /* BEFORE_IDENT */],\r\n [\"i\" /* IDENT */]: [3 /* IN_IDENT */, 0 /* APPEND */],\r\n [\"0\" /* ZERO */]: [3 /* IN_IDENT */, 0 /* APPEND */]\r\n};\r\npathStateMachine[3 /* IN_IDENT */] = {\r\n [\"i\" /* IDENT */]: [3 /* IN_IDENT */, 0 /* APPEND */],\r\n [\"0\" /* ZERO */]: [3 /* IN_IDENT */, 0 /* APPEND */],\r\n [\"w\" /* WORKSPACE */]: [1 /* IN_PATH */, 1 /* PUSH */],\r\n [\".\" /* DOT */]: [2 /* BEFORE_IDENT */, 1 /* PUSH */],\r\n [\"[\" /* LEFT_BRACKET */]: [4 /* IN_SUB_PATH */, 1 /* PUSH */],\r\n [\"o\" /* END_OF_FAIL */]: [7 /* AFTER_PATH */, 1 /* PUSH */]\r\n};\r\npathStateMachine[4 /* IN_SUB_PATH */] = {\r\n [\"'\" /* SINGLE_QUOTE */]: [5 /* IN_SINGLE_QUOTE */, 0 /* APPEND */],\r\n [\"\\\"\" /* DOUBLE_QUOTE */]: [6 /* IN_DOUBLE_QUOTE */, 0 /* APPEND */],\r\n [\"[\" /* LEFT_BRACKET */]: [\r\n 4 /* IN_SUB_PATH */,\r\n 2 /* INC_SUB_PATH_DEPTH */\r\n ],\r\n [\"]\" /* RIGHT_BRACKET */]: [1 /* IN_PATH */, 3 /* PUSH_SUB_PATH */],\r\n [\"o\" /* END_OF_FAIL */]: 8 /* ERROR */,\r\n [\"l\" /* ELSE */]: [4 /* IN_SUB_PATH */, 0 /* APPEND */]\r\n};\r\npathStateMachine[5 /* IN_SINGLE_QUOTE */] = {\r\n [\"'\" /* SINGLE_QUOTE */]: [4 /* IN_SUB_PATH */, 0 /* APPEND */],\r\n [\"o\" /* END_OF_FAIL */]: 8 /* ERROR */,\r\n [\"l\" /* ELSE */]: [5 /* IN_SINGLE_QUOTE */, 0 /* APPEND */]\r\n};\r\npathStateMachine[6 /* IN_DOUBLE_QUOTE */] = {\r\n [\"\\\"\" /* DOUBLE_QUOTE */]: [4 /* IN_SUB_PATH */, 0 /* APPEND */],\r\n [\"o\" /* END_OF_FAIL */]: 8 /* ERROR */,\r\n [\"l\" /* ELSE */]: [6 /* IN_DOUBLE_QUOTE */, 0 /* APPEND */]\r\n};\r\n/**\r\n * Check if an expression is a literal value.\r\n */\r\nconst literalValueRE = /^\\s?(?:true|false|-?[\\d.]+|'[^']*'|\"[^\"]*\")\\s?$/;\r\nfunction isLiteral(exp) {\r\n return literalValueRE.test(exp);\r\n}\r\n/**\r\n * Strip quotes from a string\r\n */\r\nfunction stripQuotes(str) {\r\n const a = str.charCodeAt(0);\r\n const b = str.charCodeAt(str.length - 1);\r\n return a === b && (a === 0x22 || a === 0x27) ? str.slice(1, -1) : str;\r\n}\r\n/**\r\n * Determine the type of a character in a keypath.\r\n */\r\nfunction getPathCharType(ch) {\r\n if (ch === undefined || ch === null) {\r\n return \"o\" /* END_OF_FAIL */;\r\n }\r\n const code = ch.charCodeAt(0);\r\n switch (code) {\r\n case 0x5b: // [\r\n case 0x5d: // ]\r\n case 0x2e: // .\r\n case 0x22: // \"\r\n case 0x27: // '\r\n return ch;\r\n case 0x5f: // _\r\n case 0x24: // $\r\n case 0x2d: // -\r\n return \"i\" /* IDENT */;\r\n case 0x09: // Tab (HT)\r\n case 0x0a: // Newline (LF)\r\n case 0x0d: // Return (CR)\r\n case 0xa0: // No-break space (NBSP)\r\n case 0xfeff: // Byte Order Mark (BOM)\r\n case 0x2028: // Line Separator (LS)\r\n case 0x2029: // Paragraph Separator (PS)\r\n return \"w\" /* WORKSPACE */;\r\n }\r\n return \"i\" /* IDENT */;\r\n}\r\n/**\r\n * Format a subPath, return its plain form if it is\r\n * a literal string or number. Otherwise prepend the\r\n * dynamic indicator (*).\r\n */\r\nfunction formatSubPath(path) {\r\n const trimmed = path.trim();\r\n // invalid leading 0\r\n if (path.charAt(0) === '0' && isNaN(parseInt(path))) {\r\n return false;\r\n }\r\n return isLiteral(trimmed)\r\n ? stripQuotes(trimmed)\r\n : \"*\" /* ASTARISK */ + trimmed;\r\n}\r\n/**\r\n * Parse a string path into an array of segments\r\n */\r\nfunction parse(path) {\r\n const keys = [];\r\n let index = -1;\r\n let mode = 0 /* BEFORE_PATH */;\r\n let subPathDepth = 0;\r\n let c;\r\n let key; // eslint-disable-line\r\n let newChar;\r\n let type;\r\n let transition;\r\n let action;\r\n let typeMap;\r\n const actions = [];\r\n actions[0 /* APPEND */] = () => {\r\n if (key === undefined) {\r\n key = newChar;\r\n }\r\n else {\r\n key += newChar;\r\n }\r\n };\r\n actions[1 /* PUSH */] = () => {\r\n if (key !== undefined) {\r\n keys.push(key);\r\n key = undefined;\r\n }\r\n };\r\n actions[2 /* INC_SUB_PATH_DEPTH */] = () => {\r\n actions[0 /* APPEND */]();\r\n subPathDepth++;\r\n };\r\n actions[3 /* PUSH_SUB_PATH */] = () => {\r\n if (subPathDepth > 0) {\r\n subPathDepth--;\r\n mode = 4 /* IN_SUB_PATH */;\r\n actions[0 /* APPEND */]();\r\n }\r\n else {\r\n subPathDepth = 0;\r\n if (key === undefined) {\r\n return false;\r\n }\r\n key = formatSubPath(key);\r\n if (key === false) {\r\n return false;\r\n }\r\n else {\r\n actions[1 /* PUSH */]();\r\n }\r\n }\r\n };\r\n function maybeUnescapeQuote() {\r\n const nextChar = path[index + 1];\r\n if ((mode === 5 /* IN_SINGLE_QUOTE */ &&\r\n nextChar === \"'\" /* SINGLE_QUOTE */) ||\r\n (mode === 6 /* IN_DOUBLE_QUOTE */ &&\r\n nextChar === \"\\\"\" /* DOUBLE_QUOTE */)) {\r\n index++;\r\n newChar = '\\\\' + nextChar;\r\n actions[0 /* APPEND */]();\r\n return true;\r\n }\r\n }\r\n while (mode !== null) {\r\n index++;\r\n c = path[index];\r\n if (c === '\\\\' && maybeUnescapeQuote()) {\r\n continue;\r\n }\r\n type = getPathCharType(c);\r\n typeMap = pathStateMachine[mode];\r\n transition = typeMap[type] || typeMap[\"l\" /* ELSE */] || 8 /* ERROR */;\r\n // check parse error\r\n if (transition === 8 /* ERROR */) {\r\n return;\r\n }\r\n mode = transition[0];\r\n if (transition[1] !== undefined) {\r\n action = actions[transition[1]];\r\n if (action) {\r\n newChar = c;\r\n if (action() === false) {\r\n return;\r\n }\r\n }\r\n }\r\n // check parse finish\r\n if (mode === 7 /* AFTER_PATH */) {\r\n return keys;\r\n }\r\n }\r\n}\r\n// path token cache\r\nconst cache = new Map();\r\n/**\r\n * key-value message resolver\r\n *\r\n * @remarks\r\n * Resolves messages with the key-value structure. Note that messages with a hierarchical structure such as objects cannot be resolved\r\n *\r\n * @param obj - A target object to be resolved with path\r\n * @param path - A {@link Path | path} to resolve the value of message\r\n *\r\n * @returns A resolved {@link PathValue | path value}\r\n *\r\n * @VueI18nGeneral\r\n */\r\nfunction resolveWithKeyValue(obj, path) {\r\n return isObject(obj) ? obj[path] : null;\r\n}\r\n/**\r\n * message resolver\r\n *\r\n * @remarks\r\n * Resolves messages. messages with a hierarchical structure such as objects can be resolved. This resolver is used in VueI18n as default.\r\n *\r\n * @param obj - A target object to be resolved with path\r\n * @param path - A {@link Path | path} to resolve the value of message\r\n *\r\n * @returns A resolved {@link PathValue | path value}\r\n *\r\n * @VueI18nGeneral\r\n */\r\nfunction resolveValue(obj, path) {\r\n // check object\r\n if (!isObject(obj)) {\r\n return null;\r\n }\r\n // parse path\r\n let hit = cache.get(path);\r\n if (!hit) {\r\n hit = parse(path);\r\n if (hit) {\r\n cache.set(path, hit);\r\n }\r\n }\r\n // check hit\r\n if (!hit) {\r\n return null;\r\n }\r\n // resolve path value\r\n const len = hit.length;\r\n let last = obj;\r\n let i = 0;\r\n while (i < len) {\r\n const val = last[hit[i]];\r\n if (val === undefined) {\r\n return null;\r\n }\r\n last = val;\r\n i++;\r\n }\r\n return last;\r\n}\n\nconst DEFAULT_MODIFIER = (str) => str;\r\nconst DEFAULT_MESSAGE = (ctx) => ''; // eslint-disable-line\r\nconst DEFAULT_MESSAGE_DATA_TYPE = 'text';\r\nconst DEFAULT_NORMALIZE = (values) => values.length === 0 ? '' : values.join('');\r\nconst DEFAULT_INTERPOLATE = toDisplayString;\r\nfunction pluralDefault(choice, choicesLength) {\r\n choice = Math.abs(choice);\r\n if (choicesLength === 2) {\r\n // prettier-ignore\r\n return choice\r\n ? choice > 1\r\n ? 1\r\n : 0\r\n : 1;\r\n }\r\n return choice ? Math.min(choice, 2) : 0;\r\n}\r\nfunction getPluralIndex(options) {\r\n // prettier-ignore\r\n const index = isNumber(options.pluralIndex)\r\n ? options.pluralIndex\r\n : -1;\r\n // prettier-ignore\r\n return options.named && (isNumber(options.named.count) || isNumber(options.named.n))\r\n ? isNumber(options.named.count)\r\n ? options.named.count\r\n : isNumber(options.named.n)\r\n ? options.named.n\r\n : index\r\n : index;\r\n}\r\nfunction normalizeNamed(pluralIndex, props) {\r\n if (!props.count) {\r\n props.count = pluralIndex;\r\n }\r\n if (!props.n) {\r\n props.n = pluralIndex;\r\n }\r\n}\r\nfunction createMessageContext(options = {}) {\r\n const locale = options.locale;\r\n const pluralIndex = getPluralIndex(options);\r\n const pluralRule = isObject(options.pluralRules) &&\r\n isString(locale) &&\r\n isFunction(options.pluralRules[locale])\r\n ? options.pluralRules[locale]\r\n : pluralDefault;\r\n const orgPluralRule = isObject(options.pluralRules) &&\r\n isString(locale) &&\r\n isFunction(options.pluralRules[locale])\r\n ? pluralDefault\r\n : undefined;\r\n const plural = (messages) => {\r\n return messages[pluralRule(pluralIndex, messages.length, orgPluralRule)];\r\n };\r\n const _list = options.list || [];\r\n const list = (index) => _list[index];\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const _named = options.named || {};\r\n isNumber(options.pluralIndex) && normalizeNamed(pluralIndex, _named);\r\n const named = (key) => _named[key];\r\n function message(key) {\r\n // prettier-ignore\r\n const msg = isFunction(options.messages)\r\n ? options.messages(key)\r\n : isObject(options.messages)\r\n ? options.messages[key]\r\n : false;\r\n return !msg\r\n ? options.parent\r\n ? options.parent.message(key) // resolve from parent messages\r\n : DEFAULT_MESSAGE\r\n : msg;\r\n }\r\n const _modifier = (name) => options.modifiers\r\n ? options.modifiers[name]\r\n : DEFAULT_MODIFIER;\r\n const normalize = isPlainObject(options.processor) && isFunction(options.processor.normalize)\r\n ? options.processor.normalize\r\n : DEFAULT_NORMALIZE;\r\n const interpolate = isPlainObject(options.processor) &&\r\n isFunction(options.processor.interpolate)\r\n ? options.processor.interpolate\r\n : DEFAULT_INTERPOLATE;\r\n const type = isPlainObject(options.processor) && isString(options.processor.type)\r\n ? options.processor.type\r\n : DEFAULT_MESSAGE_DATA_TYPE;\r\n const linked = (key, ...args) => {\r\n const [arg1, arg2] = args;\r\n let type = 'text';\r\n let modifier = '';\r\n if (args.length === 1) {\r\n if (isObject(arg1)) {\r\n modifier = arg1.modifier || modifier;\r\n type = arg1.type || type;\r\n }\r\n else if (isString(arg1)) {\r\n modifier = arg1 || modifier;\r\n }\r\n }\r\n else if (args.length === 2) {\r\n if (isString(arg1)) {\r\n modifier = arg1 || modifier;\r\n }\r\n if (isString(arg2)) {\r\n type = arg2 || type;\r\n }\r\n }\r\n let msg = message(key)(ctx);\r\n // The message in vnode resolved with linked are returned as an array by processor.nomalize\r\n if (type === 'vnode' && isArray(msg) && modifier) {\r\n msg = msg[0];\r\n }\r\n return modifier ? _modifier(modifier)(msg, type) : msg;\r\n };\r\n const ctx = {\r\n [\"list\" /* LIST */]: list,\r\n [\"named\" /* NAMED */]: named,\r\n [\"plural\" /* PLURAL */]: plural,\r\n [\"linked\" /* LINKED */]: linked,\r\n [\"message\" /* MESSAGE */]: message,\r\n [\"type\" /* TYPE */]: type,\r\n [\"interpolate\" /* INTERPOLATE */]: interpolate,\r\n [\"normalize\" /* NORMALIZE */]: normalize\r\n };\r\n return ctx;\r\n}\n\nlet devtools = null;\r\nfunction setDevToolsHook(hook) {\r\n devtools = hook;\r\n}\r\nfunction getDevToolsHook() {\r\n return devtools;\r\n}\r\nfunction initI18nDevTools(i18n, version, meta) {\r\n // TODO: queue if devtools is undefined\r\n devtools &&\r\n devtools.emit(IntlifyDevToolsHooks.I18nInit, {\r\n timestamp: Date.now(),\r\n i18n,\r\n version,\r\n meta\r\n });\r\n}\r\nconst translateDevTools = /* #__PURE__*/ createDevToolsHook(IntlifyDevToolsHooks.FunctionTranslate);\r\nfunction createDevToolsHook(hook) {\r\n return (payloads) => devtools && devtools.emit(hook, payloads);\r\n}\n\nconst CoreWarnCodes = {\r\n NOT_FOUND_KEY: 1,\r\n FALLBACK_TO_TRANSLATE: 2,\r\n CANNOT_FORMAT_NUMBER: 3,\r\n FALLBACK_TO_NUMBER_FORMAT: 4,\r\n CANNOT_FORMAT_DATE: 5,\r\n FALLBACK_TO_DATE_FORMAT: 6,\r\n __EXTEND_POINT__: 7\r\n};\r\n/** @internal */\r\nconst warnMessages = {\r\n [CoreWarnCodes.NOT_FOUND_KEY]: `Not found '{key}' key in '{locale}' locale messages.`,\r\n [CoreWarnCodes.FALLBACK_TO_TRANSLATE]: `Fall back to translate '{key}' key with '{target}' locale.`,\r\n [CoreWarnCodes.CANNOT_FORMAT_NUMBER]: `Cannot format a number value due to not supported Intl.NumberFormat.`,\r\n [CoreWarnCodes.FALLBACK_TO_NUMBER_FORMAT]: `Fall back to number format '{key}' key with '{target}' locale.`,\r\n [CoreWarnCodes.CANNOT_FORMAT_DATE]: `Cannot format a date value due to not supported Intl.DateTimeFormat.`,\r\n [CoreWarnCodes.FALLBACK_TO_DATE_FORMAT]: `Fall back to datetime format '{key}' key with '{target}' locale.`\r\n};\r\nfunction getWarnMessage(code, ...args) {\r\n return format(warnMessages[code], ...args);\r\n}\n\n/**\r\n * Fallback with simple implemenation\r\n *\r\n * @remarks\r\n * A fallback locale function implemented with a simple fallback algorithm.\r\n *\r\n * Basically, it returns the value as specified in the `fallbackLocale` props, and is processed with the fallback inside intlify.\r\n *\r\n * @param ctx - A {@link CoreContext | context}\r\n * @param fallback - A {@link FallbackLocale | fallback locale}\r\n * @param start - A starting {@link Locale | locale}\r\n *\r\n * @returns Fallback locales\r\n *\r\n * @VueI18nGeneral\r\n */\r\nfunction fallbackWithSimple(ctx, fallback, start // eslint-disable-line @typescript-eslint/no-unused-vars\r\n) {\r\n // prettier-ignore\r\n return [...new Set([\r\n start,\r\n ...(isArray(fallback)\r\n ? fallback\r\n : isObject(fallback)\r\n ? Object.keys(fallback)\r\n : isString(fallback)\r\n ? [fallback]\r\n : [start])\r\n ])];\r\n}\r\n/**\r\n * Fallback with locale chain\r\n *\r\n * @remarks\r\n * A fallback locale function implemented with a fallback chain algorithm. It's used in VueI18n as default.\r\n *\r\n * @param ctx - A {@link CoreContext | context}\r\n * @param fallback - A {@link FallbackLocale | fallback locale}\r\n * @param start - A starting {@link Locale | locale}\r\n *\r\n * @returns Fallback locales\r\n *\r\n * @VueI18nSee [Fallbacking](../guide/essentials/fallback)\r\n *\r\n * @VueI18nGeneral\r\n */\r\nfunction fallbackWithLocaleChain(ctx, fallback, start) {\r\n const startLocale = isString(start) ? start : DEFAULT_LOCALE;\r\n const context = ctx;\r\n if (!context.__localeChainCache) {\r\n context.__localeChainCache = new Map();\r\n }\r\n let chain = context.__localeChainCache.get(startLocale);\r\n if (!chain) {\r\n chain = [];\r\n // first block defined by start\r\n let block = [start];\r\n // while any intervening block found\r\n while (isArray(block)) {\r\n block = appendBlockToChain(chain, block, fallback);\r\n }\r\n // prettier-ignore\r\n // last block defined by default\r\n const defaults = isArray(fallback) || !isPlainObject(fallback)\r\n ? fallback\r\n : fallback['default']\r\n ? fallback['default']\r\n : null;\r\n // convert defaults to array\r\n block = isString(defaults) ? [defaults] : defaults;\r\n if (isArray(block)) {\r\n appendBlockToChain(chain, block, false);\r\n }\r\n context.__localeChainCache.set(startLocale, chain);\r\n }\r\n return chain;\r\n}\r\nfunction appendBlockToChain(chain, block, blocks) {\r\n let follow = true;\r\n for (let i = 0; i < block.length && isBoolean(follow); i++) {\r\n const locale = block[i];\r\n if (isString(locale)) {\r\n follow = appendLocaleToChain(chain, block[i], blocks);\r\n }\r\n }\r\n return follow;\r\n}\r\nfunction appendLocaleToChain(chain, locale, blocks) {\r\n let follow;\r\n const tokens = locale.split('-');\r\n do {\r\n const target = tokens.join('-');\r\n follow = appendItemToChain(chain, target, blocks);\r\n tokens.splice(-1, 1);\r\n } while (tokens.length && follow === true);\r\n return follow;\r\n}\r\nfunction appendItemToChain(chain, target, blocks) {\r\n let follow = false;\r\n if (!chain.includes(target)) {\r\n follow = true;\r\n if (target) {\r\n follow = target[target.length - 1] !== '!';\r\n const locale = target.replace(/!/g, '');\r\n chain.push(locale);\r\n if ((isArray(blocks) || isPlainObject(blocks)) &&\r\n blocks[locale] // eslint-disable-line @typescript-eslint/no-explicit-any\r\n ) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n follow = blocks[locale];\r\n }\r\n }\r\n }\r\n return follow;\r\n}\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/**\r\n * Intlify core-base version\r\n * @internal\r\n */\r\nconst VERSION = '9.2.2';\r\nconst NOT_REOSLVED = -1;\r\nconst DEFAULT_LOCALE = 'en-US';\r\nconst MISSING_RESOLVE_VALUE = '';\r\nconst capitalize = (str) => `${str.charAt(0).toLocaleUpperCase()}${str.substr(1)}`;\r\nfunction getDefaultLinkedModifiers() {\r\n return {\r\n upper: (val, type) => {\r\n // prettier-ignore\r\n return type === 'text' && isString(val)\r\n ? val.toUpperCase()\r\n : type === 'vnode' && isObject(val) && '__v_isVNode' in val\r\n ? val.children.toUpperCase()\r\n : val;\r\n },\r\n lower: (val, type) => {\r\n // prettier-ignore\r\n return type === 'text' && isString(val)\r\n ? val.toLowerCase()\r\n : type === 'vnode' && isObject(val) && '__v_isVNode' in val\r\n ? val.children.toLowerCase()\r\n : val;\r\n },\r\n capitalize: (val, type) => {\r\n // prettier-ignore\r\n return (type === 'text' && isString(val)\r\n ? capitalize(val)\r\n : type === 'vnode' && isObject(val) && '__v_isVNode' in val\r\n ? capitalize(val.children)\r\n : val);\r\n }\r\n };\r\n}\r\nlet _compiler;\r\nfunction registerMessageCompiler(compiler) {\r\n _compiler = compiler;\r\n}\r\nlet _resolver;\r\n/**\r\n * Register the message resolver\r\n *\r\n * @param resolver - A {@link MessageResolver} function\r\n *\r\n * @VueI18nGeneral\r\n */\r\nfunction registerMessageResolver(resolver) {\r\n _resolver = resolver;\r\n}\r\nlet _fallbacker;\r\n/**\r\n * Register the locale fallbacker\r\n *\r\n * @param fallbacker - A {@link LocaleFallbacker} function\r\n *\r\n * @VueI18nGeneral\r\n */\r\nfunction registerLocaleFallbacker(fallbacker) {\r\n _fallbacker = fallbacker;\r\n}\r\n// Additional Meta for Intlify DevTools\r\nlet _additionalMeta = null;\r\nconst setAdditionalMeta = (meta) => {\r\n _additionalMeta = meta;\r\n};\r\nconst getAdditionalMeta = () => _additionalMeta;\r\nlet _fallbackContext = null;\r\nconst setFallbackContext = (context) => {\r\n _fallbackContext = context;\r\n};\r\nconst getFallbackContext = () => _fallbackContext;\r\n// ID for CoreContext\r\nlet _cid = 0;\r\nfunction createCoreContext(options = {}) {\r\n // setup options\r\n const version = isString(options.version) ? options.version : VERSION;\r\n const locale = isString(options.locale) ? options.locale : DEFAULT_LOCALE;\r\n const fallbackLocale = isArray(options.fallbackLocale) ||\r\n isPlainObject(options.fallbackLocale) ||\r\n isString(options.fallbackLocale) ||\r\n options.fallbackLocale === false\r\n ? options.fallbackLocale\r\n : locale;\r\n const messages = isPlainObject(options.messages)\r\n ? options.messages\r\n : { [locale]: {} };\r\n const datetimeFormats = isPlainObject(options.datetimeFormats)\r\n ? options.datetimeFormats\r\n : { [locale]: {} }\r\n ;\r\n const numberFormats = isPlainObject(options.numberFormats)\r\n ? options.numberFormats\r\n : { [locale]: {} }\r\n ;\r\n const modifiers = assign({}, options.modifiers || {}, getDefaultLinkedModifiers());\r\n const pluralRules = options.pluralRules || {};\r\n const missing = isFunction(options.missing) ? options.missing : null;\r\n const missingWarn = isBoolean(options.missingWarn) || isRegExp(options.missingWarn)\r\n ? options.missingWarn\r\n : true;\r\n const fallbackWarn = isBoolean(options.fallbackWarn) || isRegExp(options.fallbackWarn)\r\n ? options.fallbackWarn\r\n : true;\r\n const fallbackFormat = !!options.fallbackFormat;\r\n const unresolving = !!options.unresolving;\r\n const postTranslation = isFunction(options.postTranslation)\r\n ? options.postTranslation\r\n : null;\r\n const processor = isPlainObject(options.processor) ? options.processor : null;\r\n const warnHtmlMessage = isBoolean(options.warnHtmlMessage)\r\n ? options.warnHtmlMessage\r\n : true;\r\n const escapeParameter = !!options.escapeParameter;\r\n const messageCompiler = isFunction(options.messageCompiler)\r\n ? options.messageCompiler\r\n : _compiler;\r\n const messageResolver = isFunction(options.messageResolver)\r\n ? options.messageResolver\r\n : _resolver || resolveWithKeyValue;\r\n const localeFallbacker = isFunction(options.localeFallbacker)\r\n ? options.localeFallbacker\r\n : _fallbacker || fallbackWithSimple;\r\n const fallbackContext = isObject(options.fallbackContext)\r\n ? options.fallbackContext\r\n : undefined;\r\n const onWarn = isFunction(options.onWarn) ? options.onWarn : warn;\r\n // setup internal options\r\n const internalOptions = options;\r\n const __datetimeFormatters = isObject(internalOptions.__datetimeFormatters)\r\n ? internalOptions.__datetimeFormatters\r\n : new Map()\r\n ;\r\n const __numberFormatters = isObject(internalOptions.__numberFormatters)\r\n ? internalOptions.__numberFormatters\r\n : new Map()\r\n ;\r\n const __meta = isObject(internalOptions.__meta) ? internalOptions.__meta : {};\r\n _cid++;\r\n const context = {\r\n version,\r\n cid: _cid,\r\n locale,\r\n fallbackLocale,\r\n messages,\r\n modifiers,\r\n pluralRules,\r\n missing,\r\n missingWarn,\r\n fallbackWarn,\r\n fallbackFormat,\r\n unresolving,\r\n postTranslation,\r\n processor,\r\n warnHtmlMessage,\r\n escapeParameter,\r\n messageCompiler,\r\n messageResolver,\r\n localeFallbacker,\r\n fallbackContext,\r\n onWarn,\r\n __meta\r\n };\r\n {\r\n context.datetimeFormats = datetimeFormats;\r\n context.numberFormats = numberFormats;\r\n context.__datetimeFormatters = __datetimeFormatters;\r\n context.__numberFormatters = __numberFormatters;\r\n }\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n context.__v_emitter =\r\n internalOptions.__v_emitter != null\r\n ? internalOptions.__v_emitter\r\n : undefined;\r\n }\r\n // NOTE: experimental !!\r\n if ((process.env.NODE_ENV !== 'production') || __INTLIFY_PROD_DEVTOOLS__) {\r\n initI18nDevTools(context, version, __meta);\r\n }\r\n return context;\r\n}\r\n/** @internal */\r\nfunction isTranslateFallbackWarn(fallback, key) {\r\n return fallback instanceof RegExp ? fallback.test(key) : fallback;\r\n}\r\n/** @internal */\r\nfunction isTranslateMissingWarn(missing, key) {\r\n return missing instanceof RegExp ? missing.test(key) : missing;\r\n}\r\n/** @internal */\r\nfunction handleMissing(context, key, locale, missingWarn, type) {\r\n const { missing, onWarn } = context;\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n const emitter = context.__v_emitter;\r\n if (emitter) {\r\n emitter.emit(\"missing\" /* MISSING */, {\r\n locale,\r\n key,\r\n type,\r\n groupId: `${type}:${key}`\r\n });\r\n }\r\n }\r\n if (missing !== null) {\r\n const ret = missing(context, locale, key, type);\r\n return isString(ret) ? ret : key;\r\n }\r\n else {\r\n if ((process.env.NODE_ENV !== 'production') && isTranslateMissingWarn(missingWarn, key)) {\r\n onWarn(getWarnMessage(CoreWarnCodes.NOT_FOUND_KEY, { key, locale }));\r\n }\r\n return key;\r\n }\r\n}\r\n/** @internal */\r\nfunction updateFallbackLocale(ctx, locale, fallback) {\r\n const context = ctx;\r\n context.__localeChainCache = new Map();\r\n ctx.localeFallbacker(ctx, fallback, locale);\r\n}\r\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\nconst RE_HTML_TAG = /<\\/?[\\w\\s=\"/.':;#-\\/]+>/;\r\nconst WARN_MESSAGE = `Detected HTML in '{source}' message. Recommend not using HTML messages to avoid XSS.`;\r\nfunction checkHtmlMessage(source, options) {\r\n const warnHtmlMessage = isBoolean(options.warnHtmlMessage)\r\n ? options.warnHtmlMessage\r\n : true;\r\n if (warnHtmlMessage && RE_HTML_TAG.test(source)) {\r\n warn(format(WARN_MESSAGE, { source }));\r\n }\r\n}\r\nconst defaultOnCacheKey = (source) => source;\r\nlet compileCache = Object.create(null);\r\nfunction clearCompileCache() {\r\n compileCache = Object.create(null);\r\n}\r\nfunction compileToFunction(source, options = {}) {\r\n {\r\n // check HTML message\r\n (process.env.NODE_ENV !== 'production') && checkHtmlMessage(source, options);\r\n // check caches\r\n const onCacheKey = options.onCacheKey || defaultOnCacheKey;\r\n const key = onCacheKey(source);\r\n const cached = compileCache[key];\r\n if (cached) {\r\n return cached;\r\n }\r\n // compile error detecting\r\n let occurred = false;\r\n const onError = options.onError || defaultOnError;\r\n options.onError = (err) => {\r\n occurred = true;\r\n onError(err);\r\n };\r\n // compile\r\n const { code } = baseCompile(source, options);\r\n // evaluate function\r\n const msg = new Function(`return ${code}`)();\r\n // if occurred compile error, don't cache\r\n return !occurred ? (compileCache[key] = msg) : msg;\r\n }\r\n}\n\nlet code = CompileErrorCodes.__EXTEND_POINT__;\r\nconst inc = () => ++code;\r\nconst CoreErrorCodes = {\r\n INVALID_ARGUMENT: code,\r\n INVALID_DATE_ARGUMENT: inc(),\r\n INVALID_ISO_DATE_ARGUMENT: inc(),\r\n __EXTEND_POINT__: inc() // 18\r\n};\r\nfunction createCoreError(code) {\r\n return createCompileError(code, null, (process.env.NODE_ENV !== 'production') ? { messages: errorMessages } : undefined);\r\n}\r\n/** @internal */\r\nconst errorMessages = {\r\n [CoreErrorCodes.INVALID_ARGUMENT]: 'Invalid arguments',\r\n [CoreErrorCodes.INVALID_DATE_ARGUMENT]: 'The date provided is an invalid Date object.' +\r\n 'Make sure your Date represents a valid date.',\r\n [CoreErrorCodes.INVALID_ISO_DATE_ARGUMENT]: 'The argument provided is not a valid ISO date string'\r\n};\n\nconst NOOP_MESSAGE_FUNCTION = () => '';\r\nconst isMessageFunction = (val) => isFunction(val);\r\n// implementation of `translate` function\r\nfunction translate(context, ...args) {\r\n const { fallbackFormat, postTranslation, unresolving, messageCompiler, fallbackLocale, messages } = context;\r\n const [key, options] = parseTranslateArgs(...args);\r\n const missingWarn = isBoolean(options.missingWarn)\r\n ? options.missingWarn\r\n : context.missingWarn;\r\n const fallbackWarn = isBoolean(options.fallbackWarn)\r\n ? options.fallbackWarn\r\n : context.fallbackWarn;\r\n const escapeParameter = isBoolean(options.escapeParameter)\r\n ? options.escapeParameter\r\n : context.escapeParameter;\r\n const resolvedMessage = !!options.resolvedMessage;\r\n // prettier-ignore\r\n const defaultMsgOrKey = isString(options.default) || isBoolean(options.default) // default by function option\r\n ? !isBoolean(options.default)\r\n ? options.default\r\n : (!messageCompiler ? () => key : key)\r\n : fallbackFormat // default by `fallbackFormat` option\r\n ? (!messageCompiler ? () => key : key)\r\n : '';\r\n const enableDefaultMsg = fallbackFormat || defaultMsgOrKey !== '';\r\n const locale = isString(options.locale) ? options.locale : context.locale;\r\n // escape params\r\n escapeParameter && escapeParams(options);\r\n // resolve message format\r\n // eslint-disable-next-line prefer-const\r\n let [formatScope, targetLocale, message] = !resolvedMessage\r\n ? resolveMessageFormat(context, key, locale, fallbackLocale, fallbackWarn, missingWarn)\r\n : [\r\n key,\r\n locale,\r\n messages[locale] || {}\r\n ];\r\n // NOTE:\r\n // Fix to work around `ssrTransfrom` bug in Vite.\r\n // https://github.com/vitejs/vite/issues/4306\r\n // To get around this, use temporary variables.\r\n // https://github.com/nuxt/framework/issues/1461#issuecomment-954606243\r\n let format = formatScope;\r\n // if you use default message, set it as message format!\r\n let cacheBaseKey = key;\r\n if (!resolvedMessage &&\r\n !(isString(format) || isMessageFunction(format))) {\r\n if (enableDefaultMsg) {\r\n format = defaultMsgOrKey;\r\n cacheBaseKey = format;\r\n }\r\n }\r\n // checking message format and target locale\r\n if (!resolvedMessage &&\r\n (!(isString(format) || isMessageFunction(format)) ||\r\n !isString(targetLocale))) {\r\n return unresolving ? NOT_REOSLVED : key;\r\n }\r\n if ((process.env.NODE_ENV !== 'production') && isString(format) && context.messageCompiler == null) {\r\n warn(`The message format compilation is not supported in this build. ` +\r\n `Because message compiler isn't included. ` +\r\n `You need to pre-compilation all message format. ` +\r\n `So translate function return '${key}'.`);\r\n return key;\r\n }\r\n // setup compile error detecting\r\n let occurred = false;\r\n const errorDetector = () => {\r\n occurred = true;\r\n };\r\n // compile message format\r\n const msg = !isMessageFunction(format)\r\n ? compileMessageFormat(context, key, targetLocale, format, cacheBaseKey, errorDetector)\r\n : format;\r\n // if occurred compile error, return the message format\r\n if (occurred) {\r\n return format;\r\n }\r\n // evaluate message with context\r\n const ctxOptions = getMessageContextOptions(context, targetLocale, message, options);\r\n const msgContext = createMessageContext(ctxOptions);\r\n const messaged = evaluateMessage(context, msg, msgContext);\r\n // if use post translation option, proceed it with handler\r\n const ret = postTranslation\r\n ? postTranslation(messaged, key)\r\n : messaged;\r\n // NOTE: experimental !!\r\n if ((process.env.NODE_ENV !== 'production') || __INTLIFY_PROD_DEVTOOLS__) {\r\n // prettier-ignore\r\n const payloads = {\r\n timestamp: Date.now(),\r\n key: isString(key)\r\n ? key\r\n : isMessageFunction(format)\r\n ? format.key\r\n : '',\r\n locale: targetLocale || (isMessageFunction(format)\r\n ? format.locale\r\n : ''),\r\n format: isString(format)\r\n ? format\r\n : isMessageFunction(format)\r\n ? format.source\r\n : '',\r\n message: ret\r\n };\r\n payloads.meta = assign({}, context.__meta, getAdditionalMeta() || {});\r\n translateDevTools(payloads);\r\n }\r\n return ret;\r\n}\r\nfunction escapeParams(options) {\r\n if (isArray(options.list)) {\r\n options.list = options.list.map(item => isString(item) ? escapeHtml(item) : item);\r\n }\r\n else if (isObject(options.named)) {\r\n Object.keys(options.named).forEach(key => {\r\n if (isString(options.named[key])) {\r\n options.named[key] = escapeHtml(options.named[key]);\r\n }\r\n });\r\n }\r\n}\r\nfunction resolveMessageFormat(context, key, locale, fallbackLocale, fallbackWarn, missingWarn) {\r\n const { messages, onWarn, messageResolver: resolveValue, localeFallbacker } = context;\r\n const locales = localeFallbacker(context, fallbackLocale, locale); // eslint-disable-line @typescript-eslint/no-explicit-any\r\n let message = {};\r\n let targetLocale;\r\n let format = null;\r\n let from = locale;\r\n let to = null;\r\n const type = 'translate';\r\n for (let i = 0; i < locales.length; i++) {\r\n targetLocale = to = locales[i];\r\n if ((process.env.NODE_ENV !== 'production') &&\r\n locale !== targetLocale &&\r\n isTranslateFallbackWarn(fallbackWarn, key)) {\r\n onWarn(getWarnMessage(CoreWarnCodes.FALLBACK_TO_TRANSLATE, {\r\n key,\r\n target: targetLocale\r\n }));\r\n }\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production') && locale !== targetLocale) {\r\n const emitter = context.__v_emitter;\r\n if (emitter) {\r\n emitter.emit(\"fallback\" /* FALBACK */, {\r\n type,\r\n key,\r\n from,\r\n to,\r\n groupId: `${type}:${key}`\r\n });\r\n }\r\n }\r\n message =\r\n messages[targetLocale] || {};\r\n // for vue-devtools timeline event\r\n let start = null;\r\n let startTag;\r\n let endTag;\r\n if ((process.env.NODE_ENV !== 'production') && inBrowser) {\r\n start = window.performance.now();\r\n startTag = 'intlify-message-resolve-start';\r\n endTag = 'intlify-message-resolve-end';\r\n mark && mark(startTag);\r\n }\r\n if ((format = resolveValue(message, key)) === null) {\r\n // if null, resolve with object key path\r\n format = message[key]; // eslint-disable-line @typescript-eslint/no-explicit-any\r\n }\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production') && inBrowser) {\r\n const end = window.performance.now();\r\n const emitter = context.__v_emitter;\r\n if (emitter && start && format) {\r\n emitter.emit(\"message-resolve\" /* MESSAGE_RESOLVE */, {\r\n type: \"message-resolve\" /* MESSAGE_RESOLVE */,\r\n key,\r\n message: format,\r\n time: end - start,\r\n groupId: `${type}:${key}`\r\n });\r\n }\r\n if (startTag && endTag && mark && measure) {\r\n mark(endTag);\r\n measure('intlify message resolve', startTag, endTag);\r\n }\r\n }\r\n if (isString(format) || isFunction(format))\r\n break;\r\n const missingRet = handleMissing(context, // eslint-disable-line @typescript-eslint/no-explicit-any\r\n key, targetLocale, missingWarn, type);\r\n if (missingRet !== key) {\r\n format = missingRet;\r\n }\r\n from = to;\r\n }\r\n return [format, targetLocale, message];\r\n}\r\nfunction compileMessageFormat(context, key, targetLocale, format, cacheBaseKey, errorDetector) {\r\n const { messageCompiler, warnHtmlMessage } = context;\r\n if (isMessageFunction(format)) {\r\n const msg = format;\r\n msg.locale = msg.locale || targetLocale;\r\n msg.key = msg.key || key;\r\n return msg;\r\n }\r\n if (messageCompiler == null) {\r\n const msg = (() => format);\r\n msg.locale = targetLocale;\r\n msg.key = key;\r\n return msg;\r\n }\r\n // for vue-devtools timeline event\r\n let start = null;\r\n let startTag;\r\n let endTag;\r\n if ((process.env.NODE_ENV !== 'production') && inBrowser) {\r\n start = window.performance.now();\r\n startTag = 'intlify-message-compilation-start';\r\n endTag = 'intlify-message-compilation-end';\r\n mark && mark(startTag);\r\n }\r\n const msg = messageCompiler(format, getCompileOptions(context, targetLocale, cacheBaseKey, format, warnHtmlMessage, errorDetector));\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production') && inBrowser) {\r\n const end = window.performance.now();\r\n const emitter = context.__v_emitter;\r\n if (emitter && start) {\r\n emitter.emit(\"message-compilation\" /* MESSAGE_COMPILATION */, {\r\n type: \"message-compilation\" /* MESSAGE_COMPILATION */,\r\n message: format,\r\n time: end - start,\r\n groupId: `${'translate'}:${key}`\r\n });\r\n }\r\n if (startTag && endTag && mark && measure) {\r\n mark(endTag);\r\n measure('intlify message compilation', startTag, endTag);\r\n }\r\n }\r\n msg.locale = targetLocale;\r\n msg.key = key;\r\n msg.source = format;\r\n return msg;\r\n}\r\nfunction evaluateMessage(context, msg, msgCtx) {\r\n // for vue-devtools timeline event\r\n let start = null;\r\n let startTag;\r\n let endTag;\r\n if ((process.env.NODE_ENV !== 'production') && inBrowser) {\r\n start = window.performance.now();\r\n startTag = 'intlify-message-evaluation-start';\r\n endTag = 'intlify-message-evaluation-end';\r\n mark && mark(startTag);\r\n }\r\n const messaged = msg(msgCtx);\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production') && inBrowser) {\r\n const end = window.performance.now();\r\n const emitter = context.__v_emitter;\r\n if (emitter && start) {\r\n emitter.emit(\"message-evaluation\" /* MESSAGE_EVALUATION */, {\r\n type: \"message-evaluation\" /* MESSAGE_EVALUATION */,\r\n value: messaged,\r\n time: end - start,\r\n groupId: `${'translate'}:${msg.key}`\r\n });\r\n }\r\n if (startTag && endTag && mark && measure) {\r\n mark(endTag);\r\n measure('intlify message evaluation', startTag, endTag);\r\n }\r\n }\r\n return messaged;\r\n}\r\n/** @internal */\r\nfunction parseTranslateArgs(...args) {\r\n const [arg1, arg2, arg3] = args;\r\n const options = {};\r\n if (!isString(arg1) && !isNumber(arg1) && !isMessageFunction(arg1)) {\r\n throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT);\r\n }\r\n // prettier-ignore\r\n const key = isNumber(arg1)\r\n ? String(arg1)\r\n : isMessageFunction(arg1)\r\n ? arg1\r\n : arg1;\r\n if (isNumber(arg2)) {\r\n options.plural = arg2;\r\n }\r\n else if (isString(arg2)) {\r\n options.default = arg2;\r\n }\r\n else if (isPlainObject(arg2) && !isEmptyObject(arg2)) {\r\n options.named = arg2;\r\n }\r\n else if (isArray(arg2)) {\r\n options.list = arg2;\r\n }\r\n if (isNumber(arg3)) {\r\n options.plural = arg3;\r\n }\r\n else if (isString(arg3)) {\r\n options.default = arg3;\r\n }\r\n else if (isPlainObject(arg3)) {\r\n assign(options, arg3);\r\n }\r\n return [key, options];\r\n}\r\nfunction getCompileOptions(context, locale, key, source, warnHtmlMessage, errorDetector) {\r\n return {\r\n warnHtmlMessage,\r\n onError: (err) => {\r\n errorDetector && errorDetector(err);\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n const message = `Message compilation error: ${err.message}`;\r\n const codeFrame = err.location &&\r\n generateCodeFrame(source, err.location.start.offset, err.location.end.offset);\r\n const emitter = context.__v_emitter;\r\n if (emitter) {\r\n emitter.emit(\"compile-error\" /* COMPILE_ERROR */, {\r\n message: source,\r\n error: err.message,\r\n start: err.location && err.location.start.offset,\r\n end: err.location && err.location.end.offset,\r\n groupId: `${'translate'}:${key}`\r\n });\r\n }\r\n console.error(codeFrame ? `${message}\\n${codeFrame}` : message);\r\n }\r\n else {\r\n throw err;\r\n }\r\n },\r\n onCacheKey: (source) => generateFormatCacheKey(locale, key, source)\r\n };\r\n}\r\nfunction getMessageContextOptions(context, locale, message, options) {\r\n const { modifiers, pluralRules, messageResolver: resolveValue, fallbackLocale, fallbackWarn, missingWarn, fallbackContext } = context;\r\n const resolveMessage = (key) => {\r\n let val = resolveValue(message, key);\r\n // fallback to root context\r\n if (val == null && fallbackContext) {\r\n const [, , message] = resolveMessageFormat(fallbackContext, key, locale, fallbackLocale, fallbackWarn, missingWarn);\r\n val = resolveValue(message, key);\r\n }\r\n if (isString(val)) {\r\n let occurred = false;\r\n const errorDetector = () => {\r\n occurred = true;\r\n };\r\n const msg = compileMessageFormat(context, key, locale, val, key, errorDetector);\r\n return !occurred\r\n ? msg\r\n : NOOP_MESSAGE_FUNCTION;\r\n }\r\n else if (isMessageFunction(val)) {\r\n return val;\r\n }\r\n else {\r\n // TODO: should be implemented warning message\r\n return NOOP_MESSAGE_FUNCTION;\r\n }\r\n };\r\n const ctxOptions = {\r\n locale,\r\n modifiers,\r\n pluralRules,\r\n messages: resolveMessage\r\n };\r\n if (context.processor) {\r\n ctxOptions.processor = context.processor;\r\n }\r\n if (options.list) {\r\n ctxOptions.list = options.list;\r\n }\r\n if (options.named) {\r\n ctxOptions.named = options.named;\r\n }\r\n if (isNumber(options.plural)) {\r\n ctxOptions.pluralIndex = options.plural;\r\n }\r\n return ctxOptions;\r\n}\n\nconst intlDefined = typeof Intl !== 'undefined';\r\nconst Availabilities = {\r\n dateTimeFormat: intlDefined && typeof Intl.DateTimeFormat !== 'undefined',\r\n numberFormat: intlDefined && typeof Intl.NumberFormat !== 'undefined'\r\n};\n\n// implementation of `datetime` function\r\nfunction datetime(context, ...args) {\r\n const { datetimeFormats, unresolving, fallbackLocale, onWarn, localeFallbacker } = context;\r\n const { __datetimeFormatters } = context;\r\n if ((process.env.NODE_ENV !== 'production') && !Availabilities.dateTimeFormat) {\r\n onWarn(getWarnMessage(CoreWarnCodes.CANNOT_FORMAT_DATE));\r\n return MISSING_RESOLVE_VALUE;\r\n }\r\n const [key, value, options, overrides] = parseDateTimeArgs(...args);\r\n const missingWarn = isBoolean(options.missingWarn)\r\n ? options.missingWarn\r\n : context.missingWarn;\r\n const fallbackWarn = isBoolean(options.fallbackWarn)\r\n ? options.fallbackWarn\r\n : context.fallbackWarn;\r\n const part = !!options.part;\r\n const locale = isString(options.locale) ? options.locale : context.locale;\r\n const locales = localeFallbacker(context, // eslint-disable-line @typescript-eslint/no-explicit-any\r\n fallbackLocale, locale);\r\n if (!isString(key) || key === '') {\r\n return new Intl.DateTimeFormat(locale, overrides).format(value);\r\n }\r\n // resolve format\r\n let datetimeFormat = {};\r\n let targetLocale;\r\n let format = null;\r\n let from = locale;\r\n let to = null;\r\n const type = 'datetime format';\r\n for (let i = 0; i < locales.length; i++) {\r\n targetLocale = to = locales[i];\r\n if ((process.env.NODE_ENV !== 'production') &&\r\n locale !== targetLocale &&\r\n isTranslateFallbackWarn(fallbackWarn, key)) {\r\n onWarn(getWarnMessage(CoreWarnCodes.FALLBACK_TO_DATE_FORMAT, {\r\n key,\r\n target: targetLocale\r\n }));\r\n }\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production') && locale !== targetLocale) {\r\n const emitter = context.__v_emitter;\r\n if (emitter) {\r\n emitter.emit(\"fallback\" /* FALBACK */, {\r\n type,\r\n key,\r\n from,\r\n to,\r\n groupId: `${type}:${key}`\r\n });\r\n }\r\n }\r\n datetimeFormat =\r\n datetimeFormats[targetLocale] || {};\r\n format = datetimeFormat[key];\r\n if (isPlainObject(format))\r\n break;\r\n handleMissing(context, key, targetLocale, missingWarn, type); // eslint-disable-line @typescript-eslint/no-explicit-any\r\n from = to;\r\n }\r\n // checking format and target locale\r\n if (!isPlainObject(format) || !isString(targetLocale)) {\r\n return unresolving ? NOT_REOSLVED : key;\r\n }\r\n let id = `${targetLocale}__${key}`;\r\n if (!isEmptyObject(overrides)) {\r\n id = `${id}__${JSON.stringify(overrides)}`;\r\n }\r\n let formatter = __datetimeFormatters.get(id);\r\n if (!formatter) {\r\n formatter = new Intl.DateTimeFormat(targetLocale, assign({}, format, overrides));\r\n __datetimeFormatters.set(id, formatter);\r\n }\r\n return !part ? formatter.format(value) : formatter.formatToParts(value);\r\n}\r\n/** @internal */\r\nconst DATETIME_FORMAT_OPTIONS_KEYS = [\r\n 'localeMatcher',\r\n 'weekday',\r\n 'era',\r\n 'year',\r\n 'month',\r\n 'day',\r\n 'hour',\r\n 'minute',\r\n 'second',\r\n 'timeZoneName',\r\n 'formatMatcher',\r\n 'hour12',\r\n 'timeZone',\r\n 'dateStyle',\r\n 'timeStyle',\r\n 'calendar',\r\n 'dayPeriod',\r\n 'numberingSystem',\r\n 'hourCycle',\r\n 'fractionalSecondDigits'\r\n];\r\n/** @internal */\r\nfunction parseDateTimeArgs(...args) {\r\n const [arg1, arg2, arg3, arg4] = args;\r\n const options = {};\r\n let overrides = {};\r\n let value;\r\n if (isString(arg1)) {\r\n // Only allow ISO strings - other date formats are often supported,\r\n // but may cause different results in different browsers.\r\n const matches = arg1.match(/(\\d{4}-\\d{2}-\\d{2})(T|\\s)?(.*)/);\r\n if (!matches) {\r\n throw createCoreError(CoreErrorCodes.INVALID_ISO_DATE_ARGUMENT);\r\n }\r\n // Some browsers can not parse the iso datetime separated by space,\r\n // this is a compromise solution by replace the 'T'/' ' with 'T'\r\n const dateTime = matches[3]\r\n ? matches[3].trim().startsWith('T')\r\n ? `${matches[1].trim()}${matches[3].trim()}`\r\n : `${matches[1].trim()}T${matches[3].trim()}`\r\n : matches[1].trim();\r\n value = new Date(dateTime);\r\n try {\r\n // This will fail if the date is not valid\r\n value.toISOString();\r\n }\r\n catch (e) {\r\n throw createCoreError(CoreErrorCodes.INVALID_ISO_DATE_ARGUMENT);\r\n }\r\n }\r\n else if (isDate(arg1)) {\r\n if (isNaN(arg1.getTime())) {\r\n throw createCoreError(CoreErrorCodes.INVALID_DATE_ARGUMENT);\r\n }\r\n value = arg1;\r\n }\r\n else if (isNumber(arg1)) {\r\n value = arg1;\r\n }\r\n else {\r\n throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT);\r\n }\r\n if (isString(arg2)) {\r\n options.key = arg2;\r\n }\r\n else if (isPlainObject(arg2)) {\r\n Object.keys(arg2).forEach(key => {\r\n if (DATETIME_FORMAT_OPTIONS_KEYS.includes(key)) {\r\n overrides[key] = arg2[key];\r\n }\r\n else {\r\n options[key] = arg2[key];\r\n }\r\n });\r\n }\r\n if (isString(arg3)) {\r\n options.locale = arg3;\r\n }\r\n else if (isPlainObject(arg3)) {\r\n overrides = arg3;\r\n }\r\n if (isPlainObject(arg4)) {\r\n overrides = arg4;\r\n }\r\n return [options.key || '', value, options, overrides];\r\n}\r\n/** @internal */\r\nfunction clearDateTimeFormat(ctx, locale, format) {\r\n const context = ctx;\r\n for (const key in format) {\r\n const id = `${locale}__${key}`;\r\n if (!context.__datetimeFormatters.has(id)) {\r\n continue;\r\n }\r\n context.__datetimeFormatters.delete(id);\r\n }\r\n}\n\n// implementation of `number` function\r\nfunction number(context, ...args) {\r\n const { numberFormats, unresolving, fallbackLocale, onWarn, localeFallbacker } = context;\r\n const { __numberFormatters } = context;\r\n if ((process.env.NODE_ENV !== 'production') && !Availabilities.numberFormat) {\r\n onWarn(getWarnMessage(CoreWarnCodes.CANNOT_FORMAT_NUMBER));\r\n return MISSING_RESOLVE_VALUE;\r\n }\r\n const [key, value, options, overrides] = parseNumberArgs(...args);\r\n const missingWarn = isBoolean(options.missingWarn)\r\n ? options.missingWarn\r\n : context.missingWarn;\r\n const fallbackWarn = isBoolean(options.fallbackWarn)\r\n ? options.fallbackWarn\r\n : context.fallbackWarn;\r\n const part = !!options.part;\r\n const locale = isString(options.locale) ? options.locale : context.locale;\r\n const locales = localeFallbacker(context, // eslint-disable-line @typescript-eslint/no-explicit-any\r\n fallbackLocale, locale);\r\n if (!isString(key) || key === '') {\r\n return new Intl.NumberFormat(locale, overrides).format(value);\r\n }\r\n // resolve format\r\n let numberFormat = {};\r\n let targetLocale;\r\n let format = null;\r\n let from = locale;\r\n let to = null;\r\n const type = 'number format';\r\n for (let i = 0; i < locales.length; i++) {\r\n targetLocale = to = locales[i];\r\n if ((process.env.NODE_ENV !== 'production') &&\r\n locale !== targetLocale &&\r\n isTranslateFallbackWarn(fallbackWarn, key)) {\r\n onWarn(getWarnMessage(CoreWarnCodes.FALLBACK_TO_NUMBER_FORMAT, {\r\n key,\r\n target: targetLocale\r\n }));\r\n }\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production') && locale !== targetLocale) {\r\n const emitter = context.__v_emitter;\r\n if (emitter) {\r\n emitter.emit(\"fallback\" /* FALBACK */, {\r\n type,\r\n key,\r\n from,\r\n to,\r\n groupId: `${type}:${key}`\r\n });\r\n }\r\n }\r\n numberFormat =\r\n numberFormats[targetLocale] || {};\r\n format = numberFormat[key];\r\n if (isPlainObject(format))\r\n break;\r\n handleMissing(context, key, targetLocale, missingWarn, type); // eslint-disable-line @typescript-eslint/no-explicit-any\r\n from = to;\r\n }\r\n // checking format and target locale\r\n if (!isPlainObject(format) || !isString(targetLocale)) {\r\n return unresolving ? NOT_REOSLVED : key;\r\n }\r\n let id = `${targetLocale}__${key}`;\r\n if (!isEmptyObject(overrides)) {\r\n id = `${id}__${JSON.stringify(overrides)}`;\r\n }\r\n let formatter = __numberFormatters.get(id);\r\n if (!formatter) {\r\n formatter = new Intl.NumberFormat(targetLocale, assign({}, format, overrides));\r\n __numberFormatters.set(id, formatter);\r\n }\r\n return !part ? formatter.format(value) : formatter.formatToParts(value);\r\n}\r\n/** @internal */\r\nconst NUMBER_FORMAT_OPTIONS_KEYS = [\r\n 'localeMatcher',\r\n 'style',\r\n 'currency',\r\n 'currencyDisplay',\r\n 'currencySign',\r\n 'useGrouping',\r\n 'minimumIntegerDigits',\r\n 'minimumFractionDigits',\r\n 'maximumFractionDigits',\r\n 'minimumSignificantDigits',\r\n 'maximumSignificantDigits',\r\n 'compactDisplay',\r\n 'notation',\r\n 'signDisplay',\r\n 'unit',\r\n 'unitDisplay',\r\n 'roundingMode',\r\n 'roundingPriority',\r\n 'roundingIncrement',\r\n 'trailingZeroDisplay'\r\n];\r\n/** @internal */\r\nfunction parseNumberArgs(...args) {\r\n const [arg1, arg2, arg3, arg4] = args;\r\n const options = {};\r\n let overrides = {};\r\n if (!isNumber(arg1)) {\r\n throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT);\r\n }\r\n const value = arg1;\r\n if (isString(arg2)) {\r\n options.key = arg2;\r\n }\r\n else if (isPlainObject(arg2)) {\r\n Object.keys(arg2).forEach(key => {\r\n if (NUMBER_FORMAT_OPTIONS_KEYS.includes(key)) {\r\n overrides[key] = arg2[key];\r\n }\r\n else {\r\n options[key] = arg2[key];\r\n }\r\n });\r\n }\r\n if (isString(arg3)) {\r\n options.locale = arg3;\r\n }\r\n else if (isPlainObject(arg3)) {\r\n overrides = arg3;\r\n }\r\n if (isPlainObject(arg4)) {\r\n overrides = arg4;\r\n }\r\n return [options.key || '', value, options, overrides];\r\n}\r\n/** @internal */\r\nfunction clearNumberFormat(ctx, locale, format) {\r\n const context = ctx;\r\n for (const key in format) {\r\n const id = `${locale}__${key}`;\r\n if (!context.__numberFormatters.has(id)) {\r\n continue;\r\n }\r\n context.__numberFormatters.delete(id);\r\n }\r\n}\n\n// TODO: we could not exports for Node native ES Moudles yet...\r\n{\r\n if (typeof __INTLIFY_PROD_DEVTOOLS__ !== 'boolean') {\r\n getGlobalThis().__INTLIFY_PROD_DEVTOOLS__ = false;\r\n }\r\n}\n\nexport { CoreErrorCodes, CoreWarnCodes, DATETIME_FORMAT_OPTIONS_KEYS, DEFAULT_LOCALE, DEFAULT_MESSAGE_DATA_TYPE, MISSING_RESOLVE_VALUE, NOT_REOSLVED, NUMBER_FORMAT_OPTIONS_KEYS, VERSION, clearCompileCache, clearDateTimeFormat, clearNumberFormat, compileToFunction, createCoreContext, createCoreError, createMessageContext, datetime, fallbackWithLocaleChain, fallbackWithSimple, getAdditionalMeta, getDevToolsHook, getFallbackContext, getWarnMessage, handleMissing, initI18nDevTools, isMessageFunction, isTranslateFallbackWarn, isTranslateMissingWarn, number, parse, parseDateTimeArgs, parseNumberArgs, parseTranslateArgs, registerLocaleFallbacker, registerMessageCompiler, registerMessageResolver, resolveValue, resolveWithKeyValue, setAdditionalMeta, setDevToolsHook, setFallbackContext, translate, translateDevTools, updateFallbackLocale };\n","/**\n * Make a map and return a function for checking if a key\n * is in that map.\n * IMPORTANT: all calls of this function must be prefixed with\n * \\/\\*#\\_\\_PURE\\_\\_\\*\\/\n * So that rollup can tree-shake them if necessary.\n */\nfunction makeMap(str, expectsLowerCase) {\n const map = Object.create(null);\n const list = str.split(',');\n for (let i = 0; i < list.length; i++) {\n map[list[i]] = true;\n }\n return expectsLowerCase ? val => !!map[val.toLowerCase()] : val => !!map[val];\n}\n\n/**\n * dev only flag -> name mapping\n */\nconst PatchFlagNames = {\n [1 /* PatchFlags.TEXT */]: `TEXT`,\n [2 /* PatchFlags.CLASS */]: `CLASS`,\n [4 /* PatchFlags.STYLE */]: `STYLE`,\n [8 /* PatchFlags.PROPS */]: `PROPS`,\n [16 /* PatchFlags.FULL_PROPS */]: `FULL_PROPS`,\n [32 /* PatchFlags.HYDRATE_EVENTS */]: `HYDRATE_EVENTS`,\n [64 /* PatchFlags.STABLE_FRAGMENT */]: `STABLE_FRAGMENT`,\n [128 /* PatchFlags.KEYED_FRAGMENT */]: `KEYED_FRAGMENT`,\n [256 /* PatchFlags.UNKEYED_FRAGMENT */]: `UNKEYED_FRAGMENT`,\n [512 /* PatchFlags.NEED_PATCH */]: `NEED_PATCH`,\n [1024 /* PatchFlags.DYNAMIC_SLOTS */]: `DYNAMIC_SLOTS`,\n [2048 /* PatchFlags.DEV_ROOT_FRAGMENT */]: `DEV_ROOT_FRAGMENT`,\n [-1 /* PatchFlags.HOISTED */]: `HOISTED`,\n [-2 /* PatchFlags.BAIL */]: `BAIL`\n};\n\n/**\n * Dev only\n */\nconst slotFlagsText = {\n [1 /* SlotFlags.STABLE */]: 'STABLE',\n [2 /* SlotFlags.DYNAMIC */]: 'DYNAMIC',\n [3 /* SlotFlags.FORWARDED */]: 'FORWARDED'\n};\n\nconst GLOBALS_WHITE_LISTED = 'Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,' +\n 'decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,' +\n 'Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt';\nconst isGloballyWhitelisted = /*#__PURE__*/ makeMap(GLOBALS_WHITE_LISTED);\n\nconst range = 2;\nfunction generateCodeFrame(source, start = 0, end = source.length) {\n // Split the content into individual lines but capture the newline sequence\n // that separated each line. This is important because the actual sequence is\n // needed to properly take into account the full line length for offset\n // comparison\n let lines = source.split(/(\\r?\\n)/);\n // Separate the lines and newline sequences into separate arrays for easier referencing\n const newlineSequences = lines.filter((_, idx) => idx % 2 === 1);\n lines = lines.filter((_, idx) => idx % 2 === 0);\n let count = 0;\n const res = [];\n for (let i = 0; i < lines.length; i++) {\n count +=\n lines[i].length +\n ((newlineSequences[i] && newlineSequences[i].length) || 0);\n if (count >= start) {\n for (let j = i - range; j <= i + range || end > count; j++) {\n if (j < 0 || j >= lines.length)\n continue;\n const line = j + 1;\n res.push(`${line}${' '.repeat(Math.max(3 - String(line).length, 0))}| ${lines[j]}`);\n const lineLength = lines[j].length;\n const newLineSeqLength = (newlineSequences[j] && newlineSequences[j].length) || 0;\n if (j === i) {\n // push underline\n const pad = start - (count - (lineLength + newLineSeqLength));\n const length = Math.max(1, end > count ? lineLength - pad : end - start);\n res.push(` | ` + ' '.repeat(pad) + '^'.repeat(length));\n }\n else if (j > i) {\n if (end > count) {\n const length = Math.max(Math.min(end - count, lineLength), 1);\n res.push(` | ` + '^'.repeat(length));\n }\n count += lineLength + newLineSeqLength;\n }\n }\n break;\n }\n }\n return res.join('\\n');\n}\n\n/**\n * On the client we only need to offer special cases for boolean attributes that\n * have different names from their corresponding dom properties:\n * - itemscope -> N/A\n * - allowfullscreen -> allowFullscreen\n * - formnovalidate -> formNoValidate\n * - ismap -> isMap\n * - nomodule -> noModule\n * - novalidate -> noValidate\n * - readonly -> readOnly\n */\nconst specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;\nconst isSpecialBooleanAttr = /*#__PURE__*/ makeMap(specialBooleanAttrs);\n/**\n * The full list is needed during SSR to produce the correct initial markup.\n */\nconst isBooleanAttr = /*#__PURE__*/ makeMap(specialBooleanAttrs +\n `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,` +\n `loop,open,required,reversed,scoped,seamless,` +\n `checked,muted,multiple,selected`);\n/**\n * Boolean attributes should be included if the value is truthy or ''.\n * e.g. `