{"version":3,"sources":["/Users/christoph/repos/own/webpack-license-plugin/dist/index.cjs","index.ts","WebpackLicensePlugin.ts","LicenseFileWriter.ts","LicenseIdentifier.ts","LicenseTextReader.ts","DefaultLicenseTextProvider.ts","NoticeTextReader.ts","LicenseMetaAggregator.ts","ModuleDirectoryLocator.ts","OptionsProvider.ts","defaultOptions.ts","PackageJsonReader.ts","WebpackAlertAggregator.ts","WebpackAssetManager.ts","WebpackChunkModuleIterator.ts","WebpackModuleFileIterator.ts","WebpackChunkIterator.ts","WebpackFileSystem.ts"],"names":["he","Object","create","u","defineProperty","ue","getOwnPropertyDescriptor","pe","getOwnPropertyNames","ge","getPrototypeOf","me","prototype","hasOwnProperty","ye","l","e","t","enumerable","configurable","writable","value","n","we","get","Q","s","i","call","f","__esModule","xe","r","index_exports","__export","default","index_default","module","exports","__toCommonJS","import_webpack","require","import_lodash","lodash","compact","uniq","LicenseFileWriter","assetManager","moduleDirectoryLocator","licenseMetaAggregator","writeLicenseFiles","filenames","options","moduleDirs","includePackages","licenseMeta","fileContents","filename","result","getModuleDirs","aggregateMeta","Set","JSON","stringify","addFile","outputFilename","keys","additionalFiles","map","getModuleDir","_LicenseFileWriter","import_spdx_expression_validate","LicenseIdentifier","alertAggregator","preferredLicenses","identifyLicense","meta","id","name","version","license","licenseOverrides","type","Array","isArray","licenses","length","findPreferredLicense","unacceptableLicenseTest","addError","validate","licenseTypes","preferredLicenseType","licenseType","_LicenseIdentifier","import_node_path","import_needle","fetch","url","res","needle","statusCode","body","REPO_URL","DefaultLicenseTextProvider","request","cache","retrieveLicenseText","_DefaultLicenseTextProvider","LicenseTextReader","fileSystem","defaultLicenseReader","readLicenseText","moduleDir","pathsInModuleDir","licenseFilename","indexOf","split","readFile","listPaths","getLicenseFilename","replenishDefaultLicenseTexts","getDefaultLicenseText","paths","path","test","directory","join","replace","_LicenseTextReader","NoticeTextReader","readNoticeText","noticeFilename","noticeFilePath","find","_NoticeTextReader","LicenseMetaAggregator","packageJsonReader","licenseIdentifier","licenseTextReader","noticeTextReader","getNpmTarballUrl","pkgName","pkgVersion","scopelessName","plusPos","substring","packageSet","sortedModuleDirs","packageIdentifier","licenseText","noticeText","sort","a","b","readPackageJson","localeCompare","has","excludedPackageTest","add","includeNoticeText","undefined","push","author","getAuthor","repository","getRepository","source","email","_LicenseMetaAggregator","ModuleDirectoryLocator","buildRoot","lastIndexOf","sep","checkModuleDir","dirWithVersion","dirWithLicense","prevModuleDir","pathExists","packageMeta","resolve","_ModuleDirectoryLocator","defaultOptions","__name","defaultOptions_default","OptionsProvider","getOptions","inputOptions","validateOptions","fileName","packageVersion","_OptionsProvider","PackageJsonReader","parse","_PackageJsonReader","WebpackError","webpack","WebpackAlertAggregator","compilation","errors","warnings","message","addWarning","flushAlerts","prefix","w","_WebpackAlertAggregator","sources","WebpackAssetManager","contents","assets","RawSource","_WebpackAssetManager","WebpackChunkModuleIterator","iterateModules","chunk","callback","chunkGraph","getChunkModulesIterable","modulesIterable","forEachModule","modules","forEach","getChunkEntryModulesIterable","entryModule","_WebpackChunkModuleIterator","WebpackModuleFileIterator","iterateFiles","resource","rootModule","fileDependencies","dependencies","dep","originModule","_parentModule","_WebpackModuleFileIterator","WebpackChunkIterator","moduleIterator","fileIterator","iterateChunks","chunks","_WebpackChunkIterator","WebpackFileSystem","fs","statSync","readFileSync","toString","dir","readdirSync","_WebpackFileSystem","pluginName","WebpackLicensePlugin","pluginOptions","createdFiles","observedCompilers","apply","compiler","hooks","tap","handleCompilation","bind","watchRun","tapAsync","handleWatchRun","plugin","_","processAssets","boundHandleChunkAssetOptimization","handleChunkAssetOptimization","stage","Compilation","PROCESS_ASSETS_STAGE_ANALYSE","optimizeChunkAssets","observedCompilersMessage","errorMessage","chunkIterator","isChild","inputFileSystem","context","_WebpackLicensePlugin"],"mappings":"2iGAAA,IAAIA,EAAGC,OAAOC,MAAM,CAAC,IAAIC,EAAEF,OAAOG,cAAc,CAAC,IAAIC,EAAGJ,OAAOK,wBAAwB,CAAC,IAAIC,EAAGN,OAAOO,mBAAmB,CAAC,IAAIC,EAAGR,OAAOS,cAAc,CAACC,EAAGV,OAAOW,SAAS,CAACC,cAAc,CAAC,IAAIC,EAAG,SAACC,EAAEC,EAAEC,UAAID,KAAKD,EAAEZ,EAAEY,EAAEC,EAAE,CAACE,WAAW,CAAC,EAAEC,aAAa,CAAC,EAAEC,SAAS,CAAC,EAAEC,MAAMJ,CAAC,GAAGF,CAAC,CAACC,EAAE,CAACC,GAAE,IAAIK,EAAE,SAACP,EAAEC,UAAIb,EAAEY,EAAE,OAAO,CAACM,MAAML,EAAEG,aAAa,CAAC,CAAC,IAAG,IAAII,EAAG,SAACR,EAAEC,GAAK,IAAI,IAAIC,KAAKD,EAAEb,EAAEY,EAAEE,EAAE,CAACO,IAAIR,CAAC,CAACC,EAAE,CAACC,WAAW,CAAC,CAAC,EAAE,EAAEO,EAAE,SAACV,EAAEC,EAAEC,EAAES,OAAwD,OAAA,QAAA,YAAnD,GAAGV,GAAG,CAAA,OAAOA,4BAAP,EAAOA,EAAAA,GAAG,UAAU,OAAOA,GAAG,gCAAe,IAAIW,EAAJ,OAAe,EAAChB,EAAGiB,IAAI,CAACb,EAAEY,IAAIA,IAAIV,GAAGd,EAAEY,EAAEY,EAAE,CAACH,IAAI,kBAAIR,CAAC,CAACW,EAAE,EAACT,WAAW,CAAEQ,CAAAA,EAAErB,EAAGW,EAAEW,EAAC,GAAID,EAAER,UAAU,IAAlG,QAAI,EAASX,EAAGS,sBAAZ,IAAA,GAAA,EAAA,gBAAA,oBAAA,OAAA,oBAAA,GAAA,gBAAA,uBAAA,SAAA,IAAiG,OAAOD,CAAC,EAAE,IAAIc,EAAE,SAACd,EAAEC,EAAEC,UAAKA,EAAEF,GAAG,KAAKf,EAAGS,EAAGM,IAAI,CAAC,EAAEU,EAAET,GAAG,CAACD,GAAG,CAACA,EAAEe,UAAU,CAAC3B,EAAEc,EAAE,UAAU,CAACI,MAAMN,EAAEG,WAAW,CAAC,CAAC,GAAGD,EAAEF,IAAIgB,EAAGhB,SAAAA,UAAGU,EAAEtB,EAAE,CAAC,EAAE,aAAa,CAACkB,MAAM,CAAC,CAAC,GAAGN,IAAG,IAAIiB,EAAE,SAACjB,EAAEC,EAAEC,UAAIH,EAAGC,EAAE,CAAA,OAAOC,4BAAP,EAAOA,EAAAA,GAAG,SAASA,EAAE,GAAGA,EAAEC,ICAnvB,IAAAgB,EAAA,CAAA,EAAAC,EAAAD,EAAA,CAAAE,QAAA,kBAAAC,GAAAA,EAAAC,CAAAA,OAAAC,OAAA,CAAAC,EAAAN,GCGA,IAAAO,EAAoBX,EAAAY,QAAA,WAAA,GCCpB,IAAAC,EAAmBb,EAAAY,QAAA,UAAA,GAEnB,IAA0BE,EAAAA,EAAAA,OAAAA,CAAlBC,EAAkBD,EAAlBC,QAASC,EAASF,EAATE,KAEIC,eAArB,iCAAqBA,EAETC,CAAAA,CACAC,CAAAA,CACAC,CAAAA,SAJSH,GAKjBd,EAAA,IAAA,CAAA,gBAAAA,EAAA,IAAA,CAAA,0BAAAA,EAAA,IAAA,CAAA,wBAAA,CAAA,IAAA,CAHQe,YAAAA,CAAAA,EAAAA,IAAAA,CACAC,sBAAAA,CAAAA,EAAAA,IAAAA,CACAC,qBAAAA,CAAAA,QAGGC,IAAAA,0BAAb,SAAaA,EACXC,CAAAA,CACAC,CAAAA,oBAFF,EAAA,eAIQC,EACAC,EACAC,EAIAC,EAGN,EAAA,EAAA,EAAA,EAAA,EAAWC,EACHC,qDAVFL,EAAa,EAAKM,aAAAA,CAAcR,GACd,SAAMC,EAAQE,eAAAA,WAAhCA,EAAkB,SACJ,SAAM,EAAKL,qBAAAA,CAAsBW,aAAAA,CAAc,EAC9D,IAAIC,IAAI,EAAIR,UAAAA,EAAeC,eAD1BC,EAAc,SAIdC,EAAeM,KAAKC,SAAAA,CAAUR,EAAa,KAAM,GACvD,EAAKR,YAAAA,CAAaiB,OAAAA,CAAQZ,EAAQa,cAAAA,CAAgBT,GAElD,OAAA,QAAA,qDAAA,EAAuBvD,OAAOiE,IAAAA,CAAKd,EAAQe,eAAe,4CAA1D,GAAA,EAAA,4BAAWV,EAAX,QACiB,SAAML,EAAQe,eAAAA,CAAgBV,EAAAA,CAAUF,WAAjDG,EAAS,SACf,EAAKX,YAAAA,CAAaiB,OAAAA,CAAQP,EAAUC,oBAFtC,yDAAA,OAAA,gCAAA,GAAA,gBAAA,uBAAA,SAAA,iCAIF,QAEOC,IAAAA,sBAAAA,SAAAA,EAAcR,CAAAA,aACnB,OAAON,EACLD,EACEO,EAAUiB,GAAAA,CAAKX,SAAAA,UACN,EAAKT,sBAAAA,CAAuBqB,YAAAA,CAAaZ,MAIxD,iBAlCmBX,EAAAA,EAAAA,qBAArB,IAAqBA,EAArBwB,ECLA,IAAAC,EAAqB1C,EAAAY,QAAA,4BAAA,GAMrB,IAAqB+B,eAArB,iCAAqBA,EAETC,CAAAA,MACSC,EAAAA,uDAA8B,EAAA,QAH9BF,GAIjBxC,EAAA,IAAA,CAAA,mBAAAA,EAAA,IAAA,CAAA,oBAAA,CAAA,IAAA,CAFQyC,eAAAA,CAAAA,EAAAA,IAAAA,CACSC,iBAAAA,CAAAA,QAGZC,IAAAA,wBAAAA,SAAAA,EACLC,CAAAA,CACAxB,CAAAA,EAKA,IAAMyB,EAAK,GAAgBD,OAAbA,EAAKE,IAAI,CAAA,KAAgB,OAAZF,EAAKG,OAAO,EACnCC,EAEJ,OAAI5B,EAAQ6B,gBAAAA,CAAiBJ,EAAAA,CAC3BG,EAAU5B,EAAQ6B,gBAAAA,CAAiBJ,EAAAA,CAE5B,EAAOD,EAAKI,OAAAA,GAAY,SAC/BA,EAAUJ,EAAKI,OAAAA,CAAQE,IAAAA,CAEhBN,EAAKI,OAAAA,CACZA,EAAUJ,EAAKI,OAAAA,CAERG,MAAMC,OAAAA,CAAQR,EAAKS,QAAQ,GAAKT,EAAKS,QAAAA,CAASC,MAAAA,CAAS,EAE9DN,EACI,IAAA,CAAKO,oBAAAA,CAAqBX,EAAKS,QAAAA,CAASjB,GAAAA,CAAIrD,SAAAA,UAAKA,EAAEmE,IAAI,KACpDN,EAAKS,QAAAA,CAAS,EAAA,CAAGH,IAAAA,CAEjB,OAAON,EAAKS,QAAAA,EAAa,UAGhCL,CAAAA,EAAUJ,EAAKS,QAAAA,EAGZL,EAGI5B,EAAQoC,uBAAAA,CAAwBR,GACvC,IAAA,CAAKP,eAAAA,CAAgBgB,QAAAA,CACnB,+BAA+CZ,OAAhBG,EAAAA,UAAgBH,OAAAA,IAAI,CAAA,EAG7Ca,EAAAA,OAAAA,EAASV,IACjB,IAAA,CAAKP,eAAAA,CAAgBgB,QAAAA,CACnB,YAA4BZ,OAAhBG,EAAAA,UAAgBH,OAAAA,EAAAA,qCAT9B,IAAA,CAAKJ,eAAAA,CAAgBgB,QAAAA,CAAS,mCAAmCZ,OAAAA,IAa5DG,GAAW,IACpB,IAEQO,IAAAA,6BAAAA,SAAAA,EAAqBI,CAAAA,MAEzB,OAAA,QAAA,YADF,OAAA,QAAA,gBAAA,QAAA,EAAmC,IAAA,CAAKjB,iBAAAA,oBAAxC,IAAA,GAAA,EAAA,gBAAA,QAAA,IAAWkB,EAAX,YACE,QAAA,EAA0BD,qBAA1B,IAAA,GAAA,EAAA,gBAAA,QAAA,IAAWE,EAAX,QACE,GAAID,IAAyBC,EAC3B,OAAOD,YAFX,OAAA,oBAAA,GAAA,gBAAA,uBAAA,SAAA,eADF,OAAA,oBAAA,GAAA,gBAAA,uBAAA,SAAA,IAOA,OAAO,IACT,iBA/DmBpB,EAAAA,EAAAA,qBAArB,IAAqBA,EAArBsB,ECJA,IAAAC,EAAqBtD,QAAA,QCLrB,IAAAuD,EAAmBnE,EAAAY,QAAA,UAAA,YAEGwD,EAAMC,CAAAA,SAAND,iCAAAA,IAAAA,EAAtB,EAAA,SAA4BC,CAAAA,MACpBC,mDAAM,SAAA,CAAA,EAAMC,EAAAA,OAAAA,EAAO,MAAOF,WAA1BC,EAAM,SACZ,SAAOA,EAAIE,UAAAA,GAAe,IAAMF,EAAIG,IAAAA,CAAO,QAC7C,UAHsBL,wBAAAA,EAAAA,EAAAA,SAKf,IAAMM,EACT,2DAMiBC,eAArB,iCAAqBA,QAGCC,EAAAA,uDAAwBR,SAHzBO,GAGgCxE,EAAA,IAAA,CAAA,WAF3C0E,EAAAA,IAAAA,CAAAA,QAAAA,CAAAA,IAAAA,CAEYD,OAAAA,CAAAA,EAAAA,IAAAA,CAFZC,KAAAA,CAAkC,CAAC,QAI9BC,IAAAA,4BAAb,SAAaA,EAAoB3B,CAAAA,oBAAjC,EAAA,eAEUmB,uDADJ,CAAC,EAAKO,KAAAA,CAAM1B,EAAAA,CAAZ,YACU,SAAM,EAAKyB,OAAAA,CAAQ,GAAyBzB,OAAtBuB,EAAAA,eAAsBvB,OAAAA,EAAAA,iBAAlDmB,EAAM,QACZ,GAAKO,KAAAA,CAAM1B,EAAAA,CAAWmB,mBAGxB,SAAO,EAAKO,KAAAA,CAAM1B,EAAAA,EAAY,QAChC,qBAZmBwB,EAAAA,EAAAA,8BAArB,IAAqBA,EAArBI,EDCA,IAAqBC,eAArB,iCAAqBA,EAETpC,CAAAA,CACAqC,CAAAA,CACA1D,CAAAA,MACA2D,EAAAA,uDAAoD,IAAIP,SAL/CK,GAMjB7E,EAAA,IAAA,CAAA,mBAAAA,EAAA,IAAA,CAAA,cAAAA,EAAA,IAAA,CAAA,WAAAA,EAAA,IAAA,CAAA,uBAAA,CAAA,IAAA,CAJQyC,eAAAA,CAAAA,EAAAA,IAAAA,CACAqC,UAAAA,CAAAA,EAAAA,IAAAA,CACA1D,OAAAA,CAAAA,EAAAA,IAAAA,CACA2D,oBAAAA,CAAAA,QAGGC,IAAAA,wBAAb,SAAaA,EACXpC,CAAAA,CACAI,CAAAA,CACAiC,CAAAA,oBAHF,EAAA,eAKQpC,EAOEpB,EAYFyD,EACAC,uDApBAtC,EAAK,GAAgBD,OAAbA,EAAKE,IAAI,CAAA,KAAgB,OAAZF,EAAKG,OAAO,EAEvC,GAAI,CAACC,EACH,SAAO,MAGT,GAAIA,EAAQoC,OAAAA,CAAQ,qBAAuB,EAAG,CACtC3D,EAAWuB,EAAQqC,KAAAA,CAAM,IAAA,CAAK,EAAA,CACpC,GAAI,CACF,SAAO,EAAKC,QAAAA,CAASL,EAAWxD,GAClC,CAAA,QAEU,CACR,EAAKgB,eAAAA,CAAgBgB,QAAAA,CACnB,kEAAkEZ,OAAAA,GAEtE,CACF,CAEMqC,EAAmB,EAAKJ,UAAAA,CAAWS,SAAAA,CAAUN,GAC7CE,EAAkB,EAAKK,kBAAAA,CAAmBN,OAE5CC,CAAAA,IAAoB,IAAA,EAApBA,cACK,EAAKG,QAAAA,CAASL,EAAWE,0BAG9B,EAAK/D,OAAAA,CAAQqE,4BAAAA,CAAb,YACK,SAAM,EAAKC,qBAAAA,CAAsB1C,aAAjC,8BAGF,2CARP,cASF,QAEOwC,IAAAA,2BAAAA,SAAAA,EAAmBG,CAAAA,MACxB,OAAA,QAAA,gBAAA,QAAA,EAAmBA,qBAAnB,IAAA,GAAA,EAAA,gBAAA,QAAA,IAAWC,EAAX,QACE,GAAI,eAAeC,IAAAA,CAAKD,GACtB,OAAOA,YAFX,OAAA,oBAAA,GAAA,gBAAA,uBAAA,SAAA,IAMA,OAAO,IACT,IAEON,IAAAA,iBAAAA,SAAAA,EAASQ,CAAAA,CAAmBrE,CAAAA,EACjC,OAAO,IAAA,CAAKqD,UAAAA,CACTQ,QAAAA,CAAAA,CAAAA,EAASS,EAAAA,IAAAA,EAAKD,EAAWrE,IACzBuE,OAAAA,CAAQ,QAAS,KACtB,IAEaN,IAAAA,8BAAb,SAAaA,EAAsB1C,CAAAA,oBAAnC,EAAA,4DACS,SAAM,EAAK+B,oBAAAA,CAAqBJ,mBAAAA,CAAoB3B,WAA3D,SAAO,YACT,qBAhEmB6B,EAAAA,EAAAA,qBAArB,IAAqBA,EAArBoB,EEdA,IAAAlC,EAAqBtD,QAAA,QAOrB,IAAqByF,eAArB,iCAAqBA,EACCpB,CAAAA,SADDoB,GAC0BlG,EAAA,IAAA,CAAA,aAAA,CAAA,IAAA,CAAzB8E,UAAAA,CAAAA,QAEPqB,IAAAA,uBAAb,SAAaA,EAAelB,CAAAA,oBAA5B,EAAA,eACQmB,EAQAC,4BARAD,EAAiB,EAAKtB,UAAAA,CACzBS,SAAAA,CAAUN,GACVqB,IAAAA,CAAK7E,SAAAA,SAAY,WAAWoE,IAAAA,CAAKpE,KAEpC,GAAI,CAAC2E,EACH,SAAO,MAGHC,EAAAA,CAAAA,EAAiBN,EAAAA,IAAAA,EAAKd,EAAWmB,GACvC,SAAO,EAAKtB,UAAAA,CAAWQ,QAAAA,CAASe,GAAgBL,OAAAA,CAAQ,QAAS,QACnE,qBAdmBE,EAAAA,EAAAA,oBAArB,IAAqBA,EAArBK,ECMA,IAAqBC,eAArB,iCAAqBA,EAEjB1B,CAAAA,CACArC,CAAAA,CACQrB,CAAAA,CACAqF,CAAAA,MACAC,EAAAA,uDAAwC,IAAIlE,EAClDC,GAEMkE,EAAAA,uDAAwC,IAAI9B,EAClDpC,EACAqC,EACA1D,GAEMwF,EAAAA,uDAAsC,IAAIV,EAChDpB,UAfe0B,GAiBjBxG,EAAA,IAAA,CAAA,WAAAA,EAAA,IAAA,CAAA,qBAAAA,EAAA,IAAA,CAAA,qBAAAA,EAAA,IAAA,CAAA,qBAAAA,EAAA,IAAA,CAAA,mBAAA,CAAA,IAAA,CAbQoB,OAAAA,CAAAA,EAAAA,IAAAA,CACAqF,iBAAAA,CAAAA,EAAAA,IAAAA,CACAC,iBAAAA,CAAAA,EAAAA,IAAAA,CAGAC,iBAAAA,CAAAA,EAAAA,IAAAA,CAKAC,gBAAAA,CAAAA,QAKFC,IAAAA,yBAAAA,SAAAA,EACNC,CAAAA,CACAC,CAAAA,EAEA,IAAMC,EAAgBF,CAAAA,CAAQ,EAAA,GAAO,IAAMA,EAAUA,EAAQzB,KAAAA,CAAM,IAAA,CAAK,EAAA,CAClE4B,EAAUF,EAAW3B,OAAAA,CAAQ,KAC7BrC,EAAUkE,IAAY,CAAA,EAAKF,EAAaA,EAAWG,SAAAA,CAAU,EAAGD,GACtE,MAAO,8BAA2CD,OAAbF,EAAAA,OAA8B/D,OAAjBiE,EAAAA,KAAiBjE,OAAAA,EAAAA,OACrE,IAEanB,IAAAA,sBAAb,SAAaA,EACXP,CAAAA,oBADF,EAAA,eAGQ8F,EACAzF,EACA0F,EAON,EAAA,EAAA,EAAA,EAAA,EAAWnC,EACHrC,EACAyE,EAWArE,EACAsE,EAKAC,uDA5BFJ,EAAa,IAAItF,IACjBH,KACA0F,EAAmB/F,EAAWmG,IAAAA,CAAK,SAACC,EAAGC,UAC3C,EAAKjB,iBAAAA,CACFkB,eAAAA,CAAgBF,GAChB3E,IAAAA,CACA8E,aAAAA,CAAc,EAAKnB,iBAAAA,CAAkBkB,eAAAA,CAAgBD,GAAG5E,IAAI,IAGjE,OAAA,QAAA,sDAAA,EAAwBsE,4CAAxB,GAAA,EAAA,4BAAWnC,EAAX,QACQrC,EAAO,EAAK6D,iBAAAA,CAAkBkB,eAAAA,CAAgB1C,GAC9CoC,EAAoB,GAAgBzE,OAAbA,EAAKE,IAAI,CAAA,KAAgB,OAAZF,EAAKG,OAAO,EAMtD,GAJIoE,EAAWU,GAAAA,CAAIR,IAIf,EAAKjG,OAAAA,CAAQ0G,mBAAAA,CAAoBlF,EAAKE,IAAAA,CAAMF,EAAKG,OAAO,EAC1D,YAGFoE,EAAWY,GAAAA,CAAIV,GACTrE,EAAU,EAAK0D,iBAAAA,CAAkB/D,eAAAA,CAAgBC,EAAM,EAAKxB,OAAO,EACrD,SAAM,EAAKuF,iBAAAA,CAAkB3B,eAAAA,CAC/CpC,EACAI,EACAiC,WAHIqC,EAAc,aAKD,EAAKlG,OAAAA,CAAQ4G,iBAAAA,CAAb,YAAiC,SAAM,EAAKpB,gBAAAA,CAAiBT,cAAAA,CAAelB,aAA3C,8BAAwDgD,KAAAA,mBAAtGV,IACN7F,EAAOwG,IAAAA,CAAK,GACVpF,KAAMF,EAAKE,IAAAA,CACXC,QAASH,EAAKG,OAAAA,CACdoF,OAAQ,EAAKC,SAAAA,CAAUxF,GACvByF,WAAY,EAAKC,aAAAA,CAAc1F,GAC/B2F,OAAQ,EAAK1B,gBAAAA,CAAiBjE,EAAKE,IAAAA,CAAMF,EAAKG,OAAO,EACrDC,QAAAA,EACAsE,YAAAA,GACIC,EAAa,CAAEA,WAAAA,CAAW,EAAI,CAAC,qBA5BvC,yDAAA,OAAA,iCAAA,GAAA,gBAAA,uBAAA,SAAA,qBAgCA,SAAO7F,KACT,QAEO0G,IAAAA,kBAAAA,SAAAA,EAAUxF,CAAAA,EACf,OAAO,EAAOA,EAAKuF,MAAAA,GAAW,SAC1B,GAAsBvF,OAAnBA,EAAKuF,MAAAA,CAAOrF,IAAI,EAClBF,OADqBA,EAAKuF,MAAAA,CAAOK,KAAAA,CAAQ,KAAsB,OAAjB5F,EAAKuF,MAAAA,CAAOK,KAAK,CAAA,KAAM,IACzB,OAA5C5F,EAAKuF,MAAAA,CAAOjE,GAAAA,CAAM,KAAoB,OAAftB,EAAKuF,MAAAA,CAAOjE,GAAG,CAAA,KAAM,IAC7CtB,EAAKuF,MACX,IAEOG,IAAAA,sBAAAA,SAAAA,EAAc1F,CAAAA,EACnB,OAAIA,EAAKyF,UAAAA,EAAczF,EAAKyF,UAAAA,CAAWnE,GAAAA,CAC9BtB,EAAKyF,UAAAA,CAAWnE,GAAAA,CAEhB,OAAOtB,EAAKyF,UAAAA,EAAe,SAC3BzF,EAAKyF,UAAAA,CAGP,IACT,iBA5FmB7B,EAAAA,EAAAA,yBAArB,IAAqBA,EAArBiC,ECXA,IAAA1E,EAA6BtD,QAAA,QAO7B,IAAqBiI,gBAArB,iCAAqBA,EAET5D,CAAAA,CACA6D,CAAAA,CACAlC,CAAAA,SAJSiC,GAKjB1I,EAAA,IAAA,CAAA,cAAAA,EAAA,IAAA,CAAA,aAAAA,EAAA,IAAA,CAAA,oBAAA,CAAA,IAAA,CAHQ8E,UAAAA,CAAAA,EAAAA,IAAAA,CACA6D,SAAAA,CAAAA,EAAAA,IAAAA,CACAlC,iBAAAA,CAAAA,QAGHpE,IAAAA,qBAAAA,SAAAA,EAAaZ,CAAAA,EAClB,IAAMwD,EAAYxD,EAASyF,SAAAA,CAAU,EAAGzF,EAASmH,WAAAA,CAAYC,EAAAA,GAAAA,GAC7D,OAAO,IAAA,CAAKC,cAAAA,CAAe7D,EAC7B,IAEQ6D,IAAAA,uBAAAA,SAAAA,EAAe7D,CAAAA,EACrB,IAAI8D,EAAgC,KAChCC,EAAgC,KAChCC,EAA+B,KAEnC,EAAG,CACD,GAAI,IAAA,CAAKnE,UAAAA,CAAWoE,UAAAA,CAAW,GAAeL,OAAZ5D,GAAY4D,OAAAA,EAAAA,GAAAA,CAAAA,iBAAoB,CAChE,IAAMM,EAAc,IAAA,CAAK1C,iBAAAA,CAAkBkB,eAAAA,CAAgB1C,EAGzDkE,CAAAA,EAAYrG,IAAAA,GAASmF,KAAAA,GAClBkB,EAAYpG,OAAAA,GAAYkF,KAAAA,GAE3Bc,CAAAA,EAAiB9D,EAAAA,AAGfkE,CAAAA,EAAYnG,OAAAA,GAAYiF,KAAAA,GACrBkB,EAAY9F,QAAAA,GAAa4E,KAAAA,CAAAA,GAE5Be,CAAAA,EAAiB/D,CAAAA,CAAAA,CAGvB,CAEAgE,EAAgBhE,EAChBA,EAAAA,CAAAA,EAAYmE,EAAAA,OAAAA,EAAQ,GAAeP,OAAZ5D,GAAoB4D,OAARA,EAAAA,GAAAA,CAAAA,MAAQA,OAAAA,EAAAA,GAAAA,EAC7C,OACE,CAACG,GACE/D,IAAcgE,GACdhE,IAAc,IAAA,CAAK0D,SAAAA,CAGxB,CAAA,OAAOK,GAAkBD,CAC3B,iBA7CmBL,EAAAA,GAAAA,0BAArB,IAAqBA,GAArBW,GCRA,IAAA9G,GAAqB1C,EAAAY,QAAA,4BAAA,GCArB,IAAM6I,GAAiC,CACrCnH,gBAAiB,CAAC,EAClBc,iBAAkB,CAAC,EACnBhB,eAAgB,oBAChBwD,6BAA8B,CAAA,EAC9BuC,kBAAmB,CAAA,EACnBxE,wBAAyB+F,EAAA,iBAAM,CAAA,GAAN,2BACzBzB,oBAAqByB,EAAA,iBAAM,CAAA,GAAN,uBACrBjI,gBAAiBiI,EAAA,iBAAM,EAAA,EAAN,kBACnB,EAEAC,GAAeF,GDRf,IAAqBG,gBAArB,iCAAqBA,EACUhH,CAAAA,SADVgH,GAC6CzJ,EAAA,IAAA,CAAA,kBAAA,CAAA,IAAA,CAAnCyC,eAAAA,CAAAA,QAEtBiH,IAAAA,mBAAAA,SAAAA,EAAWC,CAAAA,EAChB,OAAA,IAAA,CAAKC,eAAAA,CAAgBD,GACL,KAAKL,GAAmBK,EAE1C,IAEOC,IAAAA,wBAAAA,SAAAA,EAAgBD,CAAAA,MAEnB,OAAA,QAAA,YADF,GAAIA,EAAaxH,eAAAA,KACf,QAAA,EAAuBlE,OAAOiE,IAAAA,CAAKyH,EAAaxH,eAAe,qBAA/D,IAAA,GAAA,EAAA,gBAAA,QAAA,IAAW0H,EAAX,OACM,QAAOF,EAAaxH,eAAAA,CAAgB0H,EAAAA,EAAc,YACpD,IAAA,CAAKpH,eAAAA,CAAgBgB,QAAAA,CACnB,kDAAkDoG,OAAAA,EAAAA,mCAHxD,OAAA,oBAAA,GAAA,gBAAA,uBAAA,SAAA,QAUA,OAAA,QAAA,YADF,GAAIF,EAAa1G,gBAAAA,KACf,QAAA,EAA6BhF,OAAOiE,IAAAA,CAAKyH,EAAa1G,gBAAgB,qBAAtE,IAAA,GAAA,EAAA,gBAAA,QAAA,IAAW6G,EAAX,OAAsE,CAAA,CAAA,EAC/DpG,GAAAA,OAAAA,EAASiG,EAAa1G,gBAAAA,CAAiB6G,EAAe,GACzD,IAAA,CAAKrH,eAAAA,CAAgBgB,QAAAA,CACnB,qCAAkF,OAA7CkG,EAAa1G,gBAAAA,CAAiB6G,EAAe,CAAA,gDAHxF,OAAA,oBAAA,GAAA,gBAAA,uBAAA,SAAA,IAUAH,EAAalE,4BAAAA,EACV,OAAOkE,EAAalE,4BAAAA,EAAiC,WAExD,IAAA,CAAKhD,eAAAA,CAAgBgB,QAAAA,CACnB,+DAKFkG,EAAarI,eAAAA,EACV,OAAOqI,EAAarI,eAAAA,EAAoB,YAE3C,IAAA,CAAKmB,eAAAA,CAAgBgB,QAAAA,CACnB,kDAGN,iBA/CmBgG,EAAAA,GAAAA,mBAArB,IAAqBA,GAArBM,GEHA,IAAAhG,GAAqBtD,QAAA,QAMrB,IAAqBuJ,gBAArB,iCAAqBA,EAGClF,CAAAA,SAHDkF,GAG0BhK,EAAA,IAAA,CAAA,cAFrC0E,EAAAA,IAAAA,CAAAA,QAAAA,CAAAA,IAAAA,CAEYI,UAAAA,CAAAA,EAAAA,IAAAA,CAFZJ,KAAAA,CAA2B,CAAC,QAI7BiD,IAAAA,wBAAAA,SAAAA,EAAgB1C,CAAAA,EACrB,GAAI,CAAC,IAAA,CAAKP,KAAAA,CAAMO,EAAAA,CAAY,CAC1B,IAAMW,EAAAA,CAAAA,EAAOG,GAAAA,IAAAA,EAAKd,EAAW,gBACvBrC,EAAOd,KAAKmI,KAAAA,CAAM,IAAA,CAAKnF,UAAAA,CAAWQ,QAAAA,CAASM,GACjD,CAAA,IAAA,CAAKlB,KAAAA,CAAMO,EAAAA,CAAarC,CAC1B,CAEA,OAAO,IAAA,CAAK8B,KAAAA,CAAMO,EACpB,iBAbmB+E,EAAAA,GAAAA,qBAArB,IAAqBA,GAArBE,GCPA,IAAA1J,GAAoBX,EAAAY,QAAA,WAAA,GAEpB,IAAM0J,GAAeC,GAAAA,OAAAA,CAAQD,YAAAA,CAERE,gBAArB,iCAAqBA,EAIUC,CAAAA,SAJVD,GAI4CrK,EAAA,IAAA,CAAA,eAHvDuK,EAAAA,IAAAA,CAAAA,UACAC,EAAAA,IAAAA,CAAAA,WAAAA,CAAAA,IAAAA,CAEqBF,WAAAA,CAAAA,EAAAA,IAAAA,CAHrBC,MAAAA,CAAmB,EAAA,CAAA,IAAA,CACnBC,QAAAA,CAAqB,EAEmC,OAEzD/G,IAAAA,iBAAAA,SAAAA,EAASgH,CAAAA,EACd,IAAA,CAAKF,MAAAA,CAAOrC,IAAAA,CAAKuC,EACnB,IAEOC,IAAAA,mBAAAA,SAAAA,EAAWD,CAAAA,EAChB,IAAA,CAAKD,QAAAA,CAAStC,IAAAA,CAAKuC,EACrB,IAEOE,IAAAA,oBAAAA,SAAAA,EAAYC,CAAAA,MACjB,EAIA,CAJA,CAAA,CAAA,EAAA,IAAA,CAAKN,WAAAA,CAAYC,MAAAA,EAAOrC,IAAAA,OAAxB,EAA4B,EACvB,IAAA,CAAKqC,MAAAA,CAAOnI,GAAAA,CAAIpD,SAAAA,UAAK,IAAImL,GAAa,GAAcnL,OAAX4L,EAAAA,MAAW5L,OAAAA,QAEzD,IAAA,CAAKuL,MAAAA,CAAS,EAAA,CACd,CAAA,EAAA,IAAA,CAAKD,WAAAA,CAAYE,QAAAA,EAAStC,IAAAA,OAA1B,EAA8B,EACzB,IAAA,CAAKsC,QAAAA,CAASpI,GAAAA,CAAIyI,SAAAA,UAAK,IAAIV,GAAa,GAAcU,OAAXD,EAAAA,MAAWC,OAAAA,QAE3D,IAAA,CAAKL,QAAAA,CAAW,EAClB,iBAvBmBH,EAAAA,GAAAA,0BAArB,IAAqBA,GAArBS,GCHA,IAAAtK,GAAoBX,EAAAY,QAAA,WAAA,GAEpB,IAAMsK,GAAUX,GAAAA,OAAAA,CAAQW,OAAAA,CAEHC,gBAArB,iCAAqBA,EACCV,CAAAA,SADDU,GAC2BhL,EAAA,IAAA,CAAA,cAAA,CAAA,IAAA,CAA1BsK,WAAAA,CAAAA,QAEbtI,IAAAA,gBAAAA,SAAAA,EAAQP,CAAAA,CAAkBwJ,CAAAA,EAC/B,IAAA,CAAKX,WAAAA,CAAYY,MAAAA,CAAOzJ,EAAAA,CAAY,IAAIsJ,GAAQI,SAAAA,CAAUF,EAC5D,iBALmBD,EAAAA,GAAAA,uBAArB,IAAqBA,GAArBI,GCgBA,IAAqBC,gBAArB,iCAAqBA,WAAAA,SACZC,IAAAA,uBAAAA,SAAAA,EACLhB,CAAAA,CACAiB,CAAAA,CACAC,CAAAA,MAGE,OAAA,QAAA,YAOA,OAAA,QAAA,YARF,GAAI,EAAOlB,EAAYmB,UAAAA,EAAe,QACpC,QAAA,EAAqBnB,EAAYmB,UAAAA,CAAWC,uBAAAA,CAC1CH,sBADF,IAAA,GAAA,EAAA,gBAAA,QAAA,IAAWlL,EAAX,QAGEmL,EAASnL,aAHX,OAAA,oBAAA,GAAA,gBAAA,uBAAA,SAAA,SAGWA,GAGJ,EAAOkL,EAAMI,eAAAA,EAAoB,QACxC,QAAA,EAAqBJ,EAAMI,eAAAA,oBAA3B,IAAA,GAAA,EAAA,gBAAA,QAAA,IAAWtL,EAAX,QAEEmL,EAASnL,aAFX,OAAA,oBAAA,GAAA,gBAAA,uBAAA,SAAA,SAKO,OAAOkL,EAAMK,aAAAA,EAAkB,WACtCL,EAAMK,aAAAA,CAAcJ,GAEbrI,MAAMC,OAAAA,CAAQmI,EAAMM,OAAO,GAClCN,EAAMM,OAAAA,CAAQC,OAAAA,CAAQzL,SAAAA,UAAUmL,EAASnL,SAIzC,OAAA,QAAA,YADF,GAAI,EAAOiK,EAAYmB,UAAAA,EAAe,QACpC,QAAA,EAAqBnB,EAAYmB,UAAAA,CAAWM,4BAAAA,CAC1CR,sBADF,IAAA,GAAA,EAAA,gBAAA,QAAA,IAAWlL,EAAX,QAGEmL,EAASnL,aAHX,OAAA,oBAAA,GAAA,gBAAA,uBAAA,SAAA,SAMOkL,EAAMS,WAAAA,EAEbR,EAASD,EAAMS,WAAW,CAE9B,iBArCmBX,EAAAA,GAAAA,8BAArB,IAAqBA,GAArBY,GCpBA,IAAqBC,gBAArB,iCAAqBA,WAAAA,SACZC,IAAAA,qBAAAA,SAAAA,EACL,CAIc,CAEdX,CAAAA,MALEY,EADF,EACEA,SACAC,EAFF,EAEEA,WACAC,EAHF,EAGEA,iBACAC,EAJF,EAIEA,YAIEH,CAAAA,EACFZ,EAASY,GAEFC,CAAAA,UAAAA,kBAAAA,EAAYD,QAAAA,GACnBZ,EAASa,EAAWD,QAAQ,EAG1BE,GACFA,EAAiBR,OAAAA,CAAQU,SAAAA,UAAOhB,EAASgB,KAGvCD,GACFA,EAAaT,OAAAA,CAAQ,gBAAGW,IAAAA,aAAcC,IAAAA,aAChCD,EAAAA,UAAAA,kBAAAA,EAAcL,QAAAA,GAChBZ,EAASiB,EAAaL,QAAQ,EAE5BM,CAAAA,UAAAA,kBAAAA,EAAeN,QAAAA,GACjBZ,EAASkB,EAAcN,QAAQ,CAEnC,EAEJ,iBA/BmBF,EAAAA,GAAAA,6BAArB,IAAqBA,GAArBS,GCGA,IAAqBC,gBAArB,iCAAqBA,QAETC,EAAAA,uDAA6C,IAAIxB,GACjDyB,EAAAA,uDAA0C,IAAIZ,UAHrCU,GAIjB5M,EAAA,IAAA,CAAA,kBAAAA,EAAA,IAAA,CAAA,eAAA,CAAA,IAAA,CAFQ6M,cAAAA,CAAAA,EAAAA,IAAAA,CACAC,YAAAA,CAAAA,QAGHC,IAAAA,sBAAAA,SAAAA,EACLzC,CAAAA,CACA0C,CAAAA,aAEA,IAAM7L,EAAY,EAAA,KAElB,OAAA,QAAA,gBAAA,QAAA,EAAoB6L,qBAApB,IAAA,GAAA,EAAA,gBAAA,QAAA,IAAWzB,EAAX,QACE,IAAA,CAAKsB,cAAAA,CAAevB,cAAAA,CAClBhB,EACAiB,EACClL,SAAAA,GACC,EAAKyM,YAAAA,CAAaX,YAAAA,CAAa9L,EAASoB,SAAAA,GACtCN,EAAU+G,IAAAA,CAAKzG,EACjB,EACF,aARJ,OAAA,oBAAA,GAAA,gBAAA,uBAAA,SAAA,IAYA,OAAON,CACT,iBAzBmByL,EAAAA,GAAAA,wBAArB,IAAqBA,GAArBK,GCHA,IAAqBC,gBAArB,iCAAqBA,EACCC,CAAAA,SADDD,GACUlN,EAAA,IAAA,CAAA,KAAA,CAAA,IAAA,CAATmN,EAAAA,CAAAA,QAEbjE,IAAAA,mBAAAA,SAAAA,EAAWzH,CAAAA,EAChB,GAAI,CACF,OAAA,IAAA,CAAK0L,EAAAA,CAAGC,QAAAA,CAAS3L,GACV,CAAA,CACT,CAAA,QAEU,CACR,MAAO,CAAA,CACT,CACF,IAEO6D,IAAAA,iBAAAA,SAAAA,EAAS7D,CAAAA,EACd,OAAO,IAAA,CAAK0L,EAAAA,CAAGE,YAAAA,CAAa5L,GAAU6L,QAAAA,CAAS,OACjD,IAEO/H,IAAAA,kBAAAA,SAAAA,EAAUgI,CAAAA,EACf,OAAO,IAAA,CAAKJ,EAAAA,CAAGK,WAAAA,CAAYD,EAC7B,iBApBmBL,EAAAA,GAAAA,qBAArB,IAAqBA,GAArBO,GhBYA,IAAMtD,GAAeC,EAAAA,OAAAA,CAAQD,YAAAA,CACvBuD,GAAa,uBAOEC,gBAArB,iCAAqBA,QAKCC,EAAAA,uDAAyC,CAAC,SAL3CD,GAK8C3N,EAAA,IAAA,CAAA,iBAJhDmB,EAAAA,IAAAA,CAAAA,aACT0M,EAAAA,IAAAA,CAAAA,gBACAC,EAAAA,IAAAA,CAAAA,oBAAAA,CAAAA,IAAAA,CAEYF,aAAAA,CAAAA,EAAAA,IAAAA,CAJHzM,SAAAA,CAAY,IAAIU,IAAAA,IAAAA,CACzBgM,YAAAA,CAAe,CAAA,EAAA,IAAA,CACfC,iBAAAA,CAAwC,EAEkB,OAE3DC,IAAAA,cAAAA,SAAAA,EAAMC,CAAAA,EACP,EAAOA,EAASC,KAAAA,EAAU,IAC5BD,CAAAA,EAASC,KAAAA,CAAM3D,WAAAA,CAAY4D,GAAAA,CACzB,yBACA,IAAA,CAAKC,iBAAAA,CAAkBC,IAAAA,CAAK,IAAA,CAAMJ,IAEpCA,EAASC,KAAAA,CAAMI,QAAAA,CAASC,QAAAA,CACtB,yBACA,IAAA,CAAKC,cAAAA,CAAeH,IAAAA,CAAK,IAAI,EAAA,EAIxB,EAAOJ,EAASQ,MAAAA,EAAW,KAElCR,CAAAA,EAASQ,MAAAA,CACP,cACA,IAAA,CAAKL,iBAAAA,CAAkBC,IAAAA,CAAK,IAAA,CAAMJ,IAGpCA,EAASQ,MAAAA,CAAO,WAAY,IAAA,CAAKD,cAAAA,CAAeH,IAAAA,CAAK,IAAI,EAAA,CAE7D,IAEaG,IAAAA,uBAAb,SAAaA,EAAeE,CAAAA,CAAYjD,CAAAA,oBAAxC,EAAA,qCACE,EAAKqC,YAAAA,CAAe,CAAA,EACpB,EAAKC,iBAAAA,IACLtC,eACF,QAEO2C,IAAAA,0BAAAA,SAAAA,EAAkBH,CAAAA,CAAoB1D,CAAAA,EAC3C,GAAI,EAAOA,EAAY2D,KAAAA,EAAU,IAC/B,GAAI,EAAO3D,EAAY2D,KAAAA,CAAMS,aAAAA,EAAkB,IAAa,CAC1D,IAAMC,EACF,IAAA,CAAKC,4BAAAA,CAA6BR,IAAAA,CAClC,IAAA,CACAJ,EACA1D,EACAA,EAAY0C,MAAM,EAGtB1C,EAAY2D,KAAAA,CAAMS,aAAAA,CAAcJ,QAAAA,CAC9B,CACExL,KAAM,yBACN+L,MAAOzE,EAAAA,OAAAA,CAAQ0E,WAAAA,CAAYC,4BAC7B,EACA,SAAC7D,EAAQM,UAAamD,EAAkCnD,IAE5D,MAEElB,EAAY2D,KAAAA,CAAMe,mBAAAA,CAAoBV,QAAAA,CACpC,yBACA,IAAA,CAAKM,4BAAAA,CAA6BR,IAAAA,CAAK,IAAA,CAAMJ,EAAU1D,SAKpD,EAAOA,EAAYkE,MAAAA,EAAW,KAErClE,EAAYkE,MAAAA,CACV,wBACA,IAAA,CAAKI,4BAAAA,CAA6BR,IAAAA,CAAK,IAAA,CAAMJ,EAAU1D,GAG7D,IAEasE,IAAAA,qCAAb,SAAaA,EACXZ,CAAAA,CACA1D,CAAAA,CACA0C,CAAAA,CACAxB,CAAAA,oBAJF,EAAA,eAYUyD,EAGAC,EAYFzM,EAGArB,EAGA+N,EACN,EAAA,EAAA,EAAA,EAAA,EAAW1N,EASLqD,EACA2B,mDAjCN,GALA,EAAKqH,iBAAAA,CAAkB5F,IAAAA,CAAK,CAC1BpF,KAAMwH,EAAY0D,QAAAA,CAASlL,IAAAA,CAC3BsM,QAAS9E,EAAY0D,QAAAA,CAASoB,OAAAA,EAChC,GAEI,EAAKvB,YAAAA,CAAc,CACfoB,EAA2B,EAAKnB,iBAAAA,CACnC1L,GAAAA,CAAI,gBAAGU,IAAAA,KAAMsM,IAAAA,cAAc,aAA+BA,OAAlBtM,EAAAA,eAAkBsM,OAAAA,KAC1DrJ,IAAAA,CAAK,MACFmJ,EAAe,IAAI/E,GACvB,GAA8T8E,OAA3TvB,GAAAA,kTAA2TuB,OAAAA,GAEhU3E,CAAAA,EAAYC,MAAAA,CAAOrC,IAAAA,CAAKgH,GACxB1D,IACA,SACF,CAEKlB,EAAY0D,QAAAA,CAASoB,OAAAA,IACxB,CAAA,EAAKvB,YAAAA,CAAe,CAAA,CAAA,EAGhBpL,EAAkB,IAAI4H,GAAuBC,GAG7ClJ,EAFkB,IAAIqI,GAAgBhH,GAEZiH,UAAAA,CAAW,EAAKkE,aAAa,EAC7DnL,EAAgBkI,WAAAA,CAAY+C,IAEtByB,EAAgB,IAAIvC,GAC1B,OAAA,QAAA,gBAAA,IAAA,EAAuBuC,EAAcpC,aAAAA,CAAczC,EAAa0C,wBAAhE,GAAA,EAAA,gBAAA,QAAWvL,EAAX,QACE,EAAKN,SAAAA,CAAU4G,GAAAA,CAAItG,aADrB,OAAA,oBAAA,GAAA,gBAAA,uBAAA,SAAA,IAIA,GAAI6I,EAAY0D,QAAAA,CAASoB,OAAAA,GAAW,CAClC5D,IACA,SACF,CAEM1G,EAAa,IAAIoI,GAAkBc,EAASqB,eAAe,EAC3D5I,EAAoB,IAAIuD,GAAkBlF,GAgBhD,SAf0B,IAAIhE,EAC5B,IAAIkK,GAAoBV,GACxB,IAAI5B,GACF5D,EACAkJ,EAAS5M,OAAAA,CAAQkO,OAAAA,CACjB7I,GAEF,IAAID,EACF1B,EACArC,EACArB,EACAqF,IAIoBvF,iBAAAA,CAAkB,EAAI,EAAKC,SAAAA,EAAYC,WAA/D,SACAqB,EAAgBkI,WAAAA,CAAY+C,IAE5BlC,gBACF,qBAxImBmC,EAAAA,GAAAA,wBAArB,IAAqBA,GAArB4B,GDpBA,IAAAnP,GAAeuN,EDIftN,CAAAA,OAAOC,OAAO,CAAGD,OAAOC,OAAO,CAACH,OAAO","sourcesContent":["var he=Object.create;var u=Object.defineProperty;var ue=Object.getOwnPropertyDescriptor;var pe=Object.getOwnPropertyNames;var ge=Object.getPrototypeOf,me=Object.prototype.hasOwnProperty;var ye=(l,e,t)=>e in l?u(l,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):l[e]=t;var n=(l,e)=>u(l,\"name\",{value:e,configurable:!0});var we=(l,e)=>{for(var t in e)u(l,t,{get:e[t],enumerable:!0})},Q=(l,e,t,s)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let i of pe(e))!me.call(l,i)&&i!==t&&u(l,i,{get:()=>e[i],enumerable:!(s=ue(e,i))||s.enumerable});return l};var f=(l,e,t)=>(t=l!=null?he(ge(l)):{},Q(e||!l||!l.__esModule?u(t,\"default\",{value:l,enumerable:!0}):t,l)),xe=l=>Q(u({},\"__esModule\",{value:!0}),l);var r=(l,e,t)=>ye(l,typeof e!=\"symbol\"?e+\"\":e,t);var Le={};we(Le,{default:()=>Ee});module.exports=xe(Le);var B=f(require(\"webpack\"),1);var Z=f(require(\"lodash\"),1);var{compact:ke,uniq:ve}=Z.default,M=class M{constructor(e,t,s){r(this,\"assetManager\");r(this,\"moduleDirectoryLocator\");r(this,\"licenseMetaAggregator\");this.assetManager=e,this.moduleDirectoryLocator=t,this.licenseMetaAggregator=s}async writeLicenseFiles(e,t){let s=this.getModuleDirs(e),i=await t.includePackages(),o=await this.licenseMetaAggregator.aggregateMeta([...new Set([...s,...i])]),a=JSON.stringify(o,null,2);this.assetManager.addFile(t.outputFilename,a);for(let c of Object.keys(t.additionalFiles)){let d=await t.additionalFiles[c](o);this.assetManager.addFile(c,d)}}getModuleDirs(e){return ve(ke(e.map(t=>this.moduleDirectoryLocator.getModuleDir(t))))}};n(M,\"LicenseFileWriter\");var m=M;var _=f(require(\"spdx-expression-validate\"),1);var I=class I{constructor(e,t=[]){r(this,\"alertAggregator\");r(this,\"preferredLicenses\");this.alertAggregator=e,this.preferredLicenses=t}identifyLicense(e,t){let s=`${e.name}@${e.version}`,i;return t.licenseOverrides[s]?i=t.licenseOverrides[s]:typeof e.license==\"object\"?i=e.license.type:e.license?i=e.license:Array.isArray(e.licenses)&&e.licenses.length>0?i=this.findPreferredLicense(e.licenses.map(o=>o.type))||e.licenses[0].type:typeof e.licenses==\"string\"&&(i=e.licenses),i?t.unacceptableLicenseTest(i)?this.alertAggregator.addError(`Found unacceptable license \"${i}\" for ${s}`):(0,_.default)(i)||this.alertAggregator.addError(`License \"${i}\" for ${s} is not a valid SPDX expression!`):this.alertAggregator.addError(`Could not find license info for ${s}`),i||null}findPreferredLicense(e){for(let t of this.preferredLicenses)for(let s of e)if(t===s)return t;return null}};n(I,\"LicenseIdentifier\");var y=I;var te=require(\"path\");var ee=f(require(\"needle\"),1);async function Ae(l){let e=await(0,ee.default)(\"get\",l);return e.statusCode===200?e.body:null}n(Ae,\"fetch\");var $e=\"https://raw.githubusercontent.com/spdx/license-list-data\",O=class O{constructor(e=Ae){r(this,\"request\");r(this,\"cache\");this.request=e,this.cache={}}async retrieveLicenseText(e){if(!this.cache[e]){let t=await this.request(`${$e}/main/text/${e}.txt`);this.cache[e]=t}return this.cache[e]||null}};n(O,\"DefaultLicenseTextProvider\");var w=O;var J=class J{constructor(e,t,s,i=new w){r(this,\"alertAggregator\");r(this,\"fileSystem\");r(this,\"options\");r(this,\"defaultLicenseReader\");this.alertAggregator=e,this.fileSystem=t,this.options=s,this.defaultLicenseReader=i}async readLicenseText(e,t,s){let i=`${e.name}@${e.version}`;if(!t)return null;if(t.indexOf(\"SEE LICENSE IN \")===0){let c=t.split(\" \")[3];try{return this.readFile(s,c)}catch{this.alertAggregator.addError(`could not find file specified in package.json license field of ${i}`)}}let o=this.fileSystem.listPaths(s),a=this.getLicenseFilename(o);return a!==null?this.readFile(s,a):this.options.replenishDefaultLicenseTexts?await this.getDefaultLicenseText(t):null}getLicenseFilename(e){for(let t of e)if(/^licen[cs]e/i.test(t))return t;return null}readFile(e,t){return this.fileSystem.readFile((0,te.join)(e,t)).replace(/\\r\\n/g,`\n`)}async getDefaultLicenseText(e){return await this.defaultLicenseReader.retrieveLicenseText(e)}};n(J,\"LicenseTextReader\");var x=J;var se=require(\"path\");var j=class j{constructor(e){r(this,\"fileSystem\");this.fileSystem=e}async readNoticeText(e){let t=this.fileSystem.listPaths(e).find(i=>/^notice/i.test(i));if(!t)return null;let s=(0,se.join)(e,t);return this.fileSystem.readFile(s).replace(/\\r\\n/g,`\n`)}};n(j,\"NoticeTextReader\");var k=j;var N=class N{constructor(e,t,s,i,o=new y(t),a=new x(t,e,s),c=new k(e)){r(this,\"options\");r(this,\"packageJsonReader\");r(this,\"licenseIdentifier\");r(this,\"licenseTextReader\");r(this,\"noticeTextReader\");this.options=s,this.packageJsonReader=i,this.licenseIdentifier=o,this.licenseTextReader=a,this.noticeTextReader=c}getNpmTarballUrl(e,t){let s=e[0]!==\"@\"?e:e.split(\"/\")[1],i=t.indexOf(\"+\"),o=i===-1?t:t.substring(0,i);return`https://registry.npmjs.org/${e}/-/${s}-${o}.tgz`}async aggregateMeta(e){let t=new Set,s=[],i=e.sort((o,a)=>this.packageJsonReader.readPackageJson(o).name.localeCompare(this.packageJsonReader.readPackageJson(a).name));for(let o of i){let a=this.packageJsonReader.readPackageJson(o),c=`${a.name}@${a.version}`;if(t.has(c)||this.options.excludedPackageTest(a.name,a.version))continue;t.add(c);let d=this.licenseIdentifier.identifyLicense(a,this.options),p=await this.licenseTextReader.readLicenseText(a,d,o),g=this.options.includeNoticeText?await this.noticeTextReader.readNoticeText(o):void 0;s.push({name:a.name,version:a.version,author:this.getAuthor(a),repository:this.getRepository(a),source:this.getNpmTarballUrl(a.name,a.version),license:d,licenseText:p,...g?{noticeText:g}:{}})}return s}getAuthor(e){return typeof e.author==\"object\"?`${e.author.name}${e.author.email?` <${e.author.email}>`:\"\"}${e.author.url?` (${e.author.url})`:\"\"}`:e.author}getRepository(e){return e.repository&&e.repository.url?e.repository.url:typeof e.repository==\"string\"?e.repository:null}};n(N,\"LicenseMetaAggregator\");var v=N;var h=require(\"path\");var z=class z{constructor(e,t,s){r(this,\"fileSystem\");r(this,\"buildRoot\");r(this,\"packageJsonReader\");this.fileSystem=e,this.buildRoot=t,this.packageJsonReader=s}getModuleDir(e){let t=e.substring(0,e.lastIndexOf(h.sep));return this.checkModuleDir(t)}checkModuleDir(e){let t=null,s=null,i=null;do{if(this.fileSystem.pathExists(`${e}${h.sep}package.json`)){let o=this.packageJsonReader.readPackageJson(e);o.name!==void 0&&o.version!==void 0&&(t=e,(o.license!==void 0||o.licenses!==void 0)&&(s=e))}i=e,e=(0,h.resolve)(`${e}${h.sep}..${h.sep}`)}while(!s&&e!==i&&e!==this.buildRoot);return s||t}};n(z,\"ModuleDirectoryLocator\");var A=z;var re=f(require(\"spdx-expression-validate\"),1);var Fe={additionalFiles:{},licenseOverrides:{},outputFilename:\"oss-licenses.json\",replenishDefaultLicenseTexts:!1,includeNoticeText:!1,unacceptableLicenseTest:n(()=>!1,\"unacceptableLicenseTest\"),excludedPackageTest:n(()=>!1,\"excludedPackageTest\"),includePackages:n(()=>[],\"includePackages\")},ie=Fe;var D=class D{constructor(e){r(this,\"alertAggregator\");this.alertAggregator=e}getOptions(e){return this.validateOptions(e),{...ie,...e}}validateOptions(e){if(e.additionalFiles)for(let t of Object.keys(e.additionalFiles))typeof e.additionalFiles[t]!=\"function\"&&this.alertAggregator.addError(`Invalid additionalFiles option: Value for key \"${t}\" is not a function!`);if(e.licenseOverrides)for(let t of Object.keys(e.licenseOverrides))(0,re.default)(e.licenseOverrides[t])||this.alertAggregator.addError(`Invalid licenseOverrides option: \"${e.licenseOverrides[t]}\" is not a valid SPDX expression!`);e.replenishDefaultLicenseTexts&&typeof e.replenishDefaultLicenseTexts!=\"boolean\"&&this.alertAggregator.addError(\"Invalid replenishDefaultLicenseTexts option: Not a boolean!\"),e.includePackages&&typeof e.includePackages!=\"function\"&&this.alertAggregator.addError(\"Invalid includePackages option: Not a function!\")}};n(D,\"OptionsProvider\");var $=D;var ne=require(\"path\");var G=class G{constructor(e){r(this,\"fileSystem\");r(this,\"cache\");this.fileSystem=e,this.cache={}}readPackageJson(e){if(!this.cache[e]){let t=(0,ne.join)(e,\"package.json\"),s=JSON.parse(this.fileSystem.readFile(t));this.cache[e]=s}return this.cache[e]}};n(G,\"PackageJsonReader\");var F=G;var ae=f(require(\"webpack\"),1);var oe=ae.default.WebpackError,W=class W{constructor(e){r(this,\"compilation\");r(this,\"errors\");r(this,\"warnings\");this.compilation=e,this.errors=[],this.warnings=[]}addError(e){this.errors.push(e)}addWarning(e){this.warnings.push(e)}flushAlerts(e){this.compilation.errors.push(...this.errors.map(t=>new oe(`${e}: ${t}`))),this.errors=[],this.compilation.warnings.push(...this.warnings.map(t=>new oe(`${e}: ${t}`))),this.warnings=[]}};n(W,\"WebpackAlertAggregator\");var S=W;var le=f(require(\"webpack\"),1);var Se=le.default.sources,q=class q{constructor(e){r(this,\"compilation\");this.compilation=e}addFile(e,t){this.compilation.assets[e]=new Se.RawSource(t)}};n(q,\"WebpackAssetManager\");var b=q;var U=class U{iterateModules(e,t,s){if(typeof e.chunkGraph<\"u\")for(let i of e.chunkGraph.getChunkModulesIterable(t))s(i);else if(typeof t.modulesIterable<\"u\")for(let i of t.modulesIterable)s(i);else typeof t.forEachModule==\"function\"?t.forEachModule(s):Array.isArray(t.modules)&&t.modules.forEach(i=>s(i));if(typeof e.chunkGraph<\"u\")for(let i of e.chunkGraph.getChunkEntryModulesIterable(t))s(i);else t.entryModule&&s(t.entryModule)}};n(U,\"WebpackChunkModuleIterator\");var E=U;var X=class X{iterateFiles({resource:e,rootModule:t,fileDependencies:s,dependencies:i},o){e?o(e):t?.resource&&o(t.resource),s&&s.forEach(a=>o(a)),i&&i.forEach(({originModule:a,_parentModule:c})=>{a?.resource&&o(a.resource),c?.resource&&o(c.resource)})}};n(X,\"WebpackModuleFileIterator\");var L=X;var H=class H{constructor(e=new E,t=new L){r(this,\"moduleIterator\");r(this,\"fileIterator\");this.moduleIterator=e,this.fileIterator=t}iterateChunks(e,t){let s=[];for(let i of t)this.moduleIterator.iterateModules(e,i,o=>{this.fileIterator.iterateFiles(o,a=>{s.push(a)})});return s}};n(H,\"WebpackChunkIterator\");var T=H;var V=class V{constructor(e){r(this,\"fs\");this.fs=e}pathExists(e){try{return this.fs.statSync(e),!0}catch{return!1}}readFile(e){return this.fs.readFileSync(e).toString(\"utf8\")}listPaths(e){return this.fs.readdirSync(e)}};n(V,\"WebpackFileSystem\");var C=V;var be=B.default.WebpackError,Y=\"WebpackLicensePlugin\",K=class K{constructor(e={}){r(this,\"pluginOptions\");r(this,\"filenames\");r(this,\"createdFiles\");r(this,\"observedCompilers\");this.pluginOptions=e,this.filenames=new Set,this.createdFiles=!1,this.observedCompilers=[]}apply(e){typeof e.hooks<\"u\"?(e.hooks.compilation.tap(\"webpack-license-plugin\",this.handleCompilation.bind(this,e)),e.hooks.watchRun.tapAsync(\"webpack-license-plugin\",this.handleWatchRun.bind(this))):typeof e.plugin<\"u\"&&(e.plugin(\"compilation\",this.handleCompilation.bind(this,e)),e.plugin(\"watchRun\",this.handleWatchRun.bind(this)))}async handleWatchRun(e,t){this.createdFiles=!1,this.observedCompilers=[],t()}handleCompilation(e,t){if(typeof t.hooks<\"u\")if(typeof t.hooks.processAssets<\"u\"){let s=this.handleChunkAssetOptimization.bind(this,e,t,t.chunks);t.hooks.processAssets.tapAsync({name:\"webpack-license-plugin\",stage:B.default.Compilation.PROCESS_ASSETS_STAGE_ANALYSE},(i,o)=>s(o))}else t.hooks.optimizeChunkAssets.tapAsync(\"webpack-license-plugin\",this.handleChunkAssetOptimization.bind(this,e,t));else typeof t.plugin<\"u\"&&t.plugin(\"optimize-chunk-assets\",this.handleChunkAssetOptimization.bind(this,e,t))}async handleChunkAssetOptimization(e,t,s,i){if(this.observedCompilers.push({name:t.compiler.name,isChild:t.compiler.isChild()}),this.createdFiles){let P=this.observedCompilers.map(({name:de,isChild:fe})=>`compiler: ${de}, isChild: ${fe}`).join(`\n`),ce=new be(`${Y}: Found licenses after license files were already created.\nIf you see this message, you ran into an edge case we thought would not happen. Please open an isssue at https://github.com/codepunkt/webpack-license-plugin/issues with details of your webpack configuration so we can invastigate it further.\n${P}`);t.errors.push(ce),i();return}t.compiler.isChild()||(this.createdFiles=!0);let o=new S(t),c=new $(o).getOptions(this.pluginOptions);o.flushAlerts(Y);let d=new T;for(let P of d.iterateChunks(t,s))this.filenames.add(P);if(t.compiler.isChild()){i();return}let p=new C(e.inputFileSystem),g=new F(p);await new m(new b(t),new A(p,e.options.context,g),new v(p,o,c,g)).writeLicenseFiles([...this.filenames],c),o.flushAlerts(Y),i()}};n(K,\"WebpackLicensePlugin\");var R=K;var Ee=R;\nmodule.exports = module.exports.default;\n","import WebpackLicensePlugin from './WebpackLicensePlugin'\n\nexport default WebpackLicensePlugin\n","import type { Chunk, Compilation, Compiler } from 'webpack'\nimport type IPluginOptions from './types/IPluginOptions'\nimport type IWebpackPlugin from './types/IWebpackPlugin'\nimport webpack from 'webpack'\nimport LicenseFileWriter from './LicenseFileWriter'\nimport LicenseMetaAggregator from './LicenseMetaAggregator'\nimport ModuleDirectoryLocator from './ModuleDirectoryLocator'\nimport OptionsProvider from './OptionsProvider'\nimport PackageJsonReader from './PackageJsonReader'\nimport WebpackAlertAggregator from './WebpackAlertAggregator'\nimport WebpackAssetManager from './WebpackAssetManager'\nimport WebpackChunkIterator from './WebpackChunkIterator'\nimport WebpackFileSystem from './WebpackFileSystem'\n\nconst WebpackError = webpack.WebpackError\nconst pluginName = 'WebpackLicensePlugin'\n\ninterface ObservedCompiler {\n  name: string\n  isChild: boolean\n}\n\nexport default class WebpackLicensePlugin implements IWebpackPlugin {\n  private readonly filenames = new Set<string>()\n  private createdFiles = false\n  private observedCompilers: ObservedCompiler[] = []\n\n  constructor(private pluginOptions: Partial<IPluginOptions> = {}) {}\n\n  public apply(compiler: Compiler) {\n    if (typeof compiler.hooks !== 'undefined') {\n      compiler.hooks.compilation.tap(\n        'webpack-license-plugin',\n        this.handleCompilation.bind(this, compiler),\n      )\n      compiler.hooks.watchRun.tapAsync(\n        'webpack-license-plugin',\n        this.handleWatchRun.bind(this),\n      )\n    }\n    // @ts-expect-error plugin doesn't exist on compiler\n    else if (typeof compiler.plugin !== 'undefined') {\n      // @ts-expect-error plugin doesn't exist on compiler\n      compiler.plugin(\n        'compilation',\n        this.handleCompilation.bind(this, compiler),\n      )\n      // @ts-expect-error plugin doesn't exist on compiler\n      compiler.plugin('watchRun', this.handleWatchRun.bind(this))\n    }\n  }\n\n  public async handleWatchRun(_: unknown, callback: () => void) {\n    this.createdFiles = false\n    this.observedCompilers = []\n    callback()\n  }\n\n  public handleCompilation(compiler: Compiler, compilation: Compilation) {\n    if (typeof compilation.hooks !== 'undefined') {\n      if (typeof compilation.hooks.processAssets !== 'undefined') {\n        const boundHandleChunkAssetOptimization\n          = this.handleChunkAssetOptimization.bind(\n            this,\n            compiler,\n            compilation,\n            compilation.chunks,\n          )\n\n        compilation.hooks.processAssets.tapAsync(\n          {\n            name: 'webpack-license-plugin',\n            stage: webpack.Compilation.PROCESS_ASSETS_STAGE_ANALYSE,\n          },\n          (assets, callback) => boundHandleChunkAssetOptimization(callback),\n        )\n      }\n      else {\n        compilation.hooks.optimizeChunkAssets.tapAsync(\n          'webpack-license-plugin',\n          this.handleChunkAssetOptimization.bind(this, compiler, compilation),\n        )\n      }\n    }\n    // @ts-expect-error plugin doesn't exist on compilation\n    else if (typeof compilation.plugin !== 'undefined') {\n      // @ts-expect-error plugin doesn't exist on compilation\n      compilation.plugin(\n        'optimize-chunk-assets',\n        this.handleChunkAssetOptimization.bind(this, compiler, compilation),\n      )\n    }\n  }\n\n  public async handleChunkAssetOptimization(\n    compiler: Compiler,\n    compilation: Compilation,\n    chunks: Set<Chunk>,\n    callback: () => void,\n  ) {\n    this.observedCompilers.push({\n      name: compilation.compiler.name,\n      isChild: compilation.compiler.isChild(),\n    })\n\n    if (this.createdFiles) {\n      const observedCompilersMessage = this.observedCompilers\n        .map(({ name, isChild }) => `compiler: ${name}, isChild: ${isChild}`)\n        .join('\\n')\n      const errorMessage = new WebpackError(\n        `${pluginName}: Found licenses after license files were already created.\\nIf you see this message, you ran into an edge case we thought would not happen. Please open an isssue at https://github.com/codepunkt/webpack-license-plugin/issues with details of your webpack configuration so we can invastigate it further.\\n${observedCompilersMessage}`,\n      )\n      compilation.errors.push(errorMessage)\n      callback()\n      return\n    }\n\n    if (!compilation.compiler.isChild()) {\n      this.createdFiles = true\n    }\n\n    const alertAggregator = new WebpackAlertAggregator(compilation)\n    const optionsProvider = new OptionsProvider(alertAggregator)\n\n    const options = optionsProvider.getOptions(this.pluginOptions)\n    alertAggregator.flushAlerts(pluginName)\n\n    const chunkIterator = new WebpackChunkIterator()\n    for (const filename of chunkIterator.iterateChunks(compilation, chunks)) {\n      this.filenames.add(filename)\n    }\n\n    if (compilation.compiler.isChild()) {\n      callback()\n      return\n    }\n\n    const fileSystem = new WebpackFileSystem(compiler.inputFileSystem)\n    const packageJsonReader = new PackageJsonReader(fileSystem)\n    const licenseFileWriter = new LicenseFileWriter(\n      new WebpackAssetManager(compilation),\n      new ModuleDirectoryLocator(\n        fileSystem,\n        compiler.options.context,\n        packageJsonReader,\n      ),\n      new LicenseMetaAggregator(\n        fileSystem,\n        alertAggregator,\n        options,\n        packageJsonReader,\n      ),\n    )\n\n    await licenseFileWriter.writeLicenseFiles([...this.filenames], options)\n    alertAggregator.flushAlerts(pluginName)\n\n    callback()\n  }\n}\n","import type IAssetManager from './types/IAssetManager'\nimport type ILicenseMetaAggregator from './types/ILicenseMetaAggregator'\nimport type IModuleDirectoryLocator from './types/IModuleDirectoryLocator'\nimport type IPluginOptions from './types/IPluginOptions'\nimport lodash from 'lodash'\n\nconst { compact, uniq } = lodash\n\nexport default class LicenseFileWriter {\n  constructor(\n    private assetManager: IAssetManager,\n    private moduleDirectoryLocator: IModuleDirectoryLocator,\n    private licenseMetaAggregator: ILicenseMetaAggregator,\n  ) {}\n\n  public async writeLicenseFiles(\n    filenames: string[],\n    options: IPluginOptions,\n  ): Promise<void> {\n    const moduleDirs = this.getModuleDirs(filenames)\n    const includePackages = await options.includePackages()\n    const licenseMeta = await this.licenseMetaAggregator.aggregateMeta([\n      ...new Set([...moduleDirs, ...includePackages]),\n    ])\n\n    const fileContents = JSON.stringify(licenseMeta, null, 2)\n    this.assetManager.addFile(options.outputFilename, fileContents)\n\n    for (const filename of Object.keys(options.additionalFiles)) {\n      const result = await options.additionalFiles[filename](licenseMeta)\n      this.assetManager.addFile(filename, result)\n    }\n  }\n\n  public getModuleDirs(filenames: string[]): string[] {\n    return uniq(\n      compact(\n        filenames.map((filename) => {\n          return this.moduleDirectoryLocator.getModuleDir(filename)\n        }),\n      ),\n    )\n  }\n}\n","import type IAlertAggregator from './types/IAlertAggregator'\nimport type IPackageJson from './types/IPackageJson'\nimport type IPluginOptions from './types/IPluginOptions'\nimport validate from 'spdx-expression-validate'\n\n/**\n * Identifies license type based on package.json and selects\n * preferred license type if multiple are found\n */\nexport default class LicenseIdentifier {\n  constructor(\n    private alertAggregator: IAlertAggregator,\n    private readonly preferredLicenses: string[] = [],\n  ) {}\n\n  public identifyLicense(\n    meta: IPackageJson,\n    options: Pick<\n      IPluginOptions,\n      'licenseOverrides' | 'unacceptableLicenseTest'\n    >,\n  ): string | null {\n    const id = `${meta.name}@${meta.version}`\n    let license: string\n\n    if (options.licenseOverrides[id]) {\n      license = options.licenseOverrides[id]\n    }\n    else if (typeof meta.license === 'object') {\n      license = meta.license.type\n    }\n    else if (meta.license) {\n      license = meta.license\n    }\n    else if (Array.isArray(meta.licenses) && meta.licenses.length > 0) {\n      // handle deprecated `licenses` field\n      license\n        = this.findPreferredLicense(meta.licenses.map(l => l.type))\n          || meta.licenses[0].type\n    }\n    else if (typeof meta.licenses === 'string') {\n      // handle invalid string values for deprecated `licenses` field\n      // unfortunately, these are rather common\n      license = meta.licenses\n    }\n\n    if (!license) {\n      this.alertAggregator.addError(`Could not find license info for ${id}`)\n    }\n    else if (options.unacceptableLicenseTest(license)) {\n      this.alertAggregator.addError(\n        `Found unacceptable license \"${license}\" for ${id}`,\n      )\n    }\n    else if (!validate(license)) {\n      this.alertAggregator.addError(\n        `License \"${license}\" for ${id} is not a valid SPDX expression!`,\n      )\n    }\n\n    return license || null\n  }\n\n  private findPreferredLicense(licenseTypes: string[]): string | null {\n    for (const preferredLicenseType of this.preferredLicenses) {\n      for (const licenseType of licenseTypes) {\n        if (preferredLicenseType === licenseType) {\n          return preferredLicenseType\n        }\n      }\n    }\n    return null\n  }\n}\n","import type IAlertAggregator from './types/IAlertAggregator'\nimport type IDefaultLicenseTextProvider from './types/IDefaultLicenseTextProvider'\nimport type IFileSystem from './types/IFileSystem'\nimport type IPackageJson from './types/IPackageJson'\nimport type IPluginOptions from './types/IPluginOptions'\nimport { join } from 'node:path'\nimport DefaultLicenseTextProvider from './DefaultLicenseTextProvider'\n\n/**\n * Reads license text from license file.\n *\n * If no license file is found, default license texts can automatically\n * be added (either retrieved from spdx github repository or read from\n * a directory).\n */\nexport default class LicenseTextReader {\n  constructor(\n    private alertAggregator: IAlertAggregator,\n    private fileSystem: IFileSystem,\n    private options: Pick<IPluginOptions, 'replenishDefaultLicenseTexts'>,\n    private defaultLicenseReader: IDefaultLicenseTextProvider = new DefaultLicenseTextProvider(),\n  ) {}\n\n  public async readLicenseText(\n    meta: IPackageJson,\n    license: string,\n    moduleDir: string,\n  ): Promise<string | null> {\n    const id = `${meta.name}@${meta.version}`\n\n    if (!license) {\n      return null\n    }\n\n    if (license.indexOf('SEE LICENSE IN ') === 0) {\n      const filename = license.split(' ')[3]\n      try {\n        return this.readFile(moduleDir, filename)\n      }\n      // eslint-disable-next-line unused-imports/no-unused-vars\n      catch (e) {\n        this.alertAggregator.addError(\n          `could not find file specified in package.json license field of ${id}`,\n        )\n      }\n    }\n\n    const pathsInModuleDir = this.fileSystem.listPaths(moduleDir)\n    const licenseFilename = this.getLicenseFilename(pathsInModuleDir)\n\n    if (licenseFilename !== null) {\n      return this.readFile(moduleDir, licenseFilename)\n    }\n\n    if (this.options.replenishDefaultLicenseTexts) {\n      return await this.getDefaultLicenseText(license)\n    }\n\n    return null\n  }\n\n  public getLicenseFilename(paths: string[]): string | null {\n    for (const path of paths) {\n      if (/^licen[cs]e/i.test(path)) {\n        return path\n      }\n    }\n\n    return null\n  }\n\n  public readFile(directory: string, filename: string): string {\n    return this.fileSystem\n      .readFile(join(directory, filename))\n      .replace(/\\r\\n/g, '\\n')\n  }\n\n  public async getDefaultLicenseText(license: string): Promise<string> {\n    return await this.defaultLicenseReader.retrieveLicenseText(license)\n  }\n}\n","import needle from 'needle'\n\nexport async function fetch(url: string): Promise<string | null> {\n  const res = await needle('get', url)\n  return res.statusCode === 200 ? res.body : null\n}\n\nexport const REPO_URL\n  = 'https://raw.githubusercontent.com/spdx/license-list-data'\n\ninterface IDefaultLicenseTextCache {\n  [license: string]: string | null\n}\n\nexport default class DefaultLicenseTextProvider {\n  private cache: IDefaultLicenseTextCache = {}\n\n  constructor(private request: typeof fetch = fetch) {}\n\n  public async retrieveLicenseText(license: string): Promise<string | null> {\n    if (!this.cache[license]) {\n      const res = await this.request(`${REPO_URL}/main/text/${license}.txt`)\n      this.cache[license] = res\n    }\n\n    return this.cache[license] || null\n  }\n}\n","import type IFileSystem from './types/IFileSystem'\nimport { join } from 'node:path'\n\n/**\n * Reads notice text from notice file.\n *\n * If no notice file is found returns null.\n */\nexport default class NoticeTextReader {\n  constructor(private fileSystem: IFileSystem) {}\n\n  public async readNoticeText(moduleDir: string): Promise<string | null> {\n    const noticeFilename = this.fileSystem\n      .listPaths(moduleDir)\n      .find(filename => /^notice/i.test(filename))\n\n    if (!noticeFilename) {\n      return null\n    }\n\n    const noticeFilePath = join(moduleDir, noticeFilename)\n    return this.fileSystem.readFile(noticeFilePath).replace(/\\r\\n/g, '\\n')\n  }\n}\n","import type IAlertAggregator from './types/IAlertAggregator'\nimport type IFileSystem from './types/IFileSystem'\nimport type ILicenseIdentifier from './types/ILicenseIdentifier'\nimport type ILicenseMetaAggregator from './types/ILicenseMetaAggregator'\nimport type ILicenseTextReader from './types/ILicenseTextReader'\nimport type INoticeTextReader from './types/INoticeTextReader'\nimport type IPackageJson from './types/IPackageJson'\nimport type IPackageJsonReader from './types/IPackageJsonReader'\nimport type IPackageLicenseMeta from './types/IPackageLicenseMeta'\nimport type IPluginOptions from './types/IPluginOptions'\nimport LicenseIdentifier from './LicenseIdentifier'\nimport LicenseTextReader from './LicenseTextReader'\nimport NoticeTextReader from './NoticeTextReader'\n\nexport default class LicenseMetaAggregator implements ILicenseMetaAggregator {\n  constructor(\n    fileSystem: IFileSystem,\n    alertAggregator: IAlertAggregator,\n    private options: IPluginOptions,\n    private packageJsonReader: IPackageJsonReader,\n    private licenseIdentifier: ILicenseIdentifier = new LicenseIdentifier(\n      alertAggregator,\n    ),\n    private licenseTextReader: ILicenseTextReader = new LicenseTextReader(\n      alertAggregator,\n      fileSystem,\n      options,\n    ),\n    private noticeTextReader: INoticeTextReader = new NoticeTextReader(\n      fileSystem,\n    ),\n  ) { }\n\n  private getNpmTarballUrl(\n    pkgName: string,\n    pkgVersion: string,\n  ) {\n    const scopelessName = pkgName[0] !== '@' ? pkgName : pkgName.split('/')[1]\n    const plusPos = pkgVersion.indexOf('+')\n    const version = plusPos === -1 ? pkgVersion : pkgVersion.substring(0, plusPos)\n    return `https://registry.npmjs.org/${pkgName}/-/${scopelessName}-${version}.tgz`\n  }\n\n  public async aggregateMeta(\n    moduleDirs: string[],\n  ): Promise<IPackageLicenseMeta[]> {\n    const packageSet = new Set()\n    const result: IPackageLicenseMeta[] = []\n    const sortedModuleDirs = moduleDirs.sort((a, b) =>\n      this.packageJsonReader\n        .readPackageJson(a)\n        .name\n        .localeCompare(this.packageJsonReader.readPackageJson(b).name),\n    )\n\n    for (const moduleDir of sortedModuleDirs) {\n      const meta = this.packageJsonReader.readPackageJson(moduleDir)\n      const packageIdentifier = `${meta.name}@${meta.version}`\n\n      if (packageSet.has(packageIdentifier)) {\n        continue\n      }\n\n      if (this.options.excludedPackageTest(meta.name, meta.version)) {\n        continue\n      }\n\n      packageSet.add(packageIdentifier)\n      const license = this.licenseIdentifier.identifyLicense(meta, this.options)\n      const licenseText = await this.licenseTextReader.readLicenseText(\n        meta,\n        license,\n        moduleDir,\n      )\n      const noticeText = this.options.includeNoticeText ? await this.noticeTextReader.readNoticeText(moduleDir) : undefined\n      result.push({\n        name: meta.name,\n        version: meta.version,\n        author: this.getAuthor(meta),\n        repository: this.getRepository(meta),\n        source: this.getNpmTarballUrl(meta.name, meta.version),\n        license,\n        licenseText,\n        ...(noticeText ? { noticeText } : {}),\n      })\n    }\n\n    return result\n  }\n\n  public getAuthor(meta: Pick<IPackageJson, 'author'>): string {\n    return typeof meta.author === 'object'\n      ? `${meta.author.name}${meta.author.email ? ` <${meta.author.email}>` : ''\n      }${meta.author.url ? ` (${meta.author.url})` : ''}`\n      : meta.author\n  }\n\n  public getRepository(meta: Pick<IPackageJson, 'repository'>): string {\n    if (meta.repository && meta.repository.url) {\n      return meta.repository.url\n    }\n    else if (typeof meta.repository === 'string') {\n      return meta.repository\n    }\n\n    return null\n  }\n}\n","import type IFileSystem from './types/IFileSystem'\nimport type IModuleDirectoryLocator from './types/IModuleDirectoryLocator'\nimport type IPackageJsonReader from './types/IPackageJsonReader'\nimport { resolve, sep } from 'node:path'\n\n/**\n * Locates module directories for given filenames by searching\n * the directory tree for package.json files.\n */\n\nexport default class ModuleDirectoryLocator implements IModuleDirectoryLocator {\n  constructor(\n    private fileSystem: IFileSystem,\n    private buildRoot: string,\n    private packageJsonReader: IPackageJsonReader,\n  ) {}\n\n  public getModuleDir(filename: string): string | null {\n    const moduleDir = filename.substring(0, filename.lastIndexOf(sep))\n    return this.checkModuleDir(moduleDir)\n  }\n\n  private checkModuleDir(moduleDir: string): string | null {\n    let dirWithVersion: string | null = null\n    let dirWithLicense: string | null = null\n    let prevModuleDir: string | null = null\n\n    do {\n      if (this.fileSystem.pathExists(`${moduleDir}${sep}package.json`)) {\n        const packageMeta = this.packageJsonReader.readPackageJson(moduleDir)\n\n        if (\n          packageMeta.name !== undefined\n          && packageMeta.version !== undefined\n        ) {\n          dirWithVersion = moduleDir\n\n          if (\n            packageMeta.license !== undefined\n            || packageMeta.licenses !== undefined\n          ) {\n            dirWithLicense = moduleDir\n          }\n        }\n      }\n\n      prevModuleDir = moduleDir\n      moduleDir = resolve(`${moduleDir}${sep}..${sep}`)\n    } while (\n      !dirWithLicense\n      && moduleDir !== prevModuleDir\n      && moduleDir !== this.buildRoot\n    )\n\n    return dirWithLicense || dirWithVersion\n  }\n}\n","import type IAlertAggregator from './types/IAlertAggregator'\nimport type IPluginOptions from './types/IPluginOptions'\nimport validate from 'spdx-expression-validate'\nimport defaultOptions from './defaultOptions'\n\nexport default class OptionsProvider {\n  constructor(private readonly alertAggregator: IAlertAggregator) {}\n\n  public getOptions(inputOptions: Partial<IPluginOptions>): IPluginOptions {\n    this.validateOptions(inputOptions)\n    const options = { ...defaultOptions, ...inputOptions }\n    return options\n  }\n\n  public validateOptions(inputOptions: Partial<IPluginOptions>) {\n    if (inputOptions.additionalFiles) {\n      for (const fileName of Object.keys(inputOptions.additionalFiles)) {\n        if (typeof inputOptions.additionalFiles[fileName] !== 'function') {\n          this.alertAggregator.addError(\n            `Invalid additionalFiles option: Value for key \"${fileName}\" is not a function!`,\n          )\n        }\n      }\n    }\n\n    if (inputOptions.licenseOverrides) {\n      for (const packageVersion of Object.keys(inputOptions.licenseOverrides)) {\n        if (!validate(inputOptions.licenseOverrides[packageVersion])) {\n          this.alertAggregator.addError(\n            `Invalid licenseOverrides option: \"${inputOptions.licenseOverrides[packageVersion]}\" is not a valid SPDX expression!`,\n          )\n        }\n      }\n    }\n\n    if (\n      inputOptions.replenishDefaultLicenseTexts\n      && typeof inputOptions.replenishDefaultLicenseTexts !== 'boolean'\n    ) {\n      this.alertAggregator.addError(\n        `Invalid replenishDefaultLicenseTexts option: Not a boolean!`,\n      )\n    }\n\n    if (\n      inputOptions.includePackages\n      && typeof inputOptions.includePackages !== 'function'\n    ) {\n      this.alertAggregator.addError(\n        `Invalid includePackages option: Not a function!`,\n      )\n    }\n  }\n}\n","import type IPluginOptions from './types/IPluginOptions'\n\nconst defaultOptions: IPluginOptions = {\n  additionalFiles: {},\n  licenseOverrides: {},\n  outputFilename: 'oss-licenses.json',\n  replenishDefaultLicenseTexts: false,\n  includeNoticeText: false,\n  unacceptableLicenseTest: () => false,\n  excludedPackageTest: () => false,\n  includePackages: () => [],\n}\n\nexport default defaultOptions\n","import type IFileSystem from './types/IFileSystem'\nimport type IPackageJson from './types/IPackageJson'\nimport { join } from 'node:path'\n\ninterface IPackageJsonCache {\n  [moduleDir: string]: IPackageJson\n}\n\nexport default class PackageJsonReader {\n  private cache: IPackageJsonCache = {}\n\n  constructor(private fileSystem: IFileSystem) {}\n\n  public readPackageJson(moduleDir: string): IPackageJson {\n    if (!this.cache[moduleDir]) {\n      const path = join(moduleDir, 'package.json')\n      const meta = JSON.parse(this.fileSystem.readFile(path))\n      this.cache[moduleDir] = meta\n    }\n\n    return this.cache[moduleDir]\n  }\n}\n","import type IAlertAggregator from './types/IAlertAggregator'\nimport webpack from 'webpack'\n\nconst WebpackError = webpack.WebpackError\n\nexport default class WebpackAlertAggregator implements IAlertAggregator {\n  private errors: string[] = []\n  private warnings: string[] = []\n\n  constructor(private readonly compilation: webpack.Compilation) {}\n\n  public addError(message: string) {\n    this.errors.push(message)\n  }\n\n  public addWarning(message: string) {\n    this.warnings.push(message)\n  }\n\n  public flushAlerts(prefix: string): void {\n    this.compilation.errors.push(\n      ...this.errors.map(e => new WebpackError(`${prefix}: ${e}`)),\n    )\n    this.errors = []\n    this.compilation.warnings.push(\n      ...this.warnings.map(w => new WebpackError(`${prefix}: ${w}`)),\n    )\n    this.warnings = []\n  }\n}\n","import type { Compilation } from 'webpack'\nimport type IAssetManager from './types/IAssetManager'\nimport webpack from 'webpack'\n\nconst sources = webpack.sources\n\nexport default class WebpackAssetManager implements IAssetManager {\n  constructor(private compilation: Compilation) {}\n\n  public addFile(filename: string, contents: string): void {\n    this.compilation.assets[filename] = new sources.RawSource(contents)\n  }\n}\n","import type * as webpack from 'webpack'\nimport type IWebpackChunkModule from './types/IWebpackChunkModule'\n\nexport type Compilation = Partial<\n  webpack.Compilation & {\n    chunkGraph: {\n      getChunkModulesIterable: (chunk: Chunk) => IWebpackChunkModule[]\n      getChunkEntryModulesIterable: (chunk: Chunk) => IWebpackChunkModule[]\n    }\n  }\n>\n\ntype Chunk = Partial<\n  Pick<\n    webpack.Chunk & {\n      forEachModule?: (callback: (module: IWebpackChunkModule) => void) => void\n      modules?: IWebpackChunkModule[]\n    },\n    'entryModule' | 'forEachModule' | 'modules' | 'modulesIterable'\n  >\n>\n\nexport default class WebpackChunkModuleIterator {\n  public iterateModules(\n    compilation: Compilation,\n    chunk: Chunk,\n    callback: (module: IWebpackChunkModule) => void,\n  ): void {\n    if (typeof compilation.chunkGraph !== 'undefined') {\n      for (const module of compilation.chunkGraph.getChunkModulesIterable(\n        chunk,\n      )) {\n        callback(module)\n      }\n    }\n    else if (typeof chunk.modulesIterable !== 'undefined') {\n      for (const module of chunk.modulesIterable) {\n        // @ts-expect-error module not assignable to IWebpackChunkModule\n        callback(module)\n      }\n    }\n    else if (typeof chunk.forEachModule === 'function') {\n      chunk.forEachModule(callback)\n    }\n    else if (Array.isArray(chunk.modules)) {\n      chunk.modules.forEach(module => callback(module))\n    }\n\n    if (typeof compilation.chunkGraph !== 'undefined') {\n      for (const module of compilation.chunkGraph.getChunkEntryModulesIterable(\n        chunk,\n      )) {\n        callback(module)\n      }\n    }\n    else if (chunk.entryModule) {\n      // @ts-expect-error chunk.entryModule not assignable to IWebpackChunkModule\n      callback(chunk.entryModule)\n    }\n  }\n}\n","import type IWebpackChunkModule from './types/IWebpackChunkModule'\n\nexport default class WebpackModuleFileIterator {\n  public iterateFiles(\n    {\n      resource,\n      rootModule,\n      fileDependencies,\n      dependencies,\n    }: IWebpackChunkModule,\n    callback: (filename: string) => void,\n  ): void {\n    if (resource) {\n      callback(resource)\n    }\n    else if (rootModule?.resource) {\n      callback(rootModule.resource)\n    }\n\n    if (fileDependencies) {\n      fileDependencies.forEach(dep => callback(dep))\n    }\n\n    if (dependencies) {\n      dependencies.forEach(({ originModule, _parentModule }) => {\n        if (originModule?.resource) {\n          callback(originModule.resource)\n        }\n        if (_parentModule?.resource) {\n          callback(_parentModule.resource)\n        }\n      })\n    }\n  }\n}\n","import type * as webpack from 'webpack'\nimport type { Compilation } from './WebpackChunkModuleIterator'\nimport WebpackChunkModuleIterator from './WebpackChunkModuleIterator'\nimport WebpackModuleFileIterator from './WebpackModuleFileIterator'\n\nexport default class WebpackChunkIterator {\n  constructor(\n    private moduleIterator: WebpackChunkModuleIterator = new WebpackChunkModuleIterator(),\n    private fileIterator: WebpackModuleFileIterator = new WebpackModuleFileIterator(),\n  ) {}\n\n  public iterateChunks(\n    compilation: webpack.Compilation,\n    chunks: Set<webpack.Chunk>,\n  ): string[] {\n    const filenames = []\n\n    for (const chunk of chunks) {\n      this.moduleIterator.iterateModules(\n        compilation as Compilation,\n        chunk,\n        (module) => {\n          this.fileIterator.iterateFiles(module, (filename) => {\n            filenames.push(filename)\n          })\n        },\n      )\n    }\n\n    return filenames\n  }\n}\n","import type IFileSystem from './types/IFileSystem'\n\nexport default class WebpackFileSystem implements IFileSystem {\n  constructor(private fs: any) {}\n\n  public pathExists(filename: string): boolean {\n    try {\n      this.fs.statSync(filename)\n      return true\n    }\n    // eslint-disable-next-line unused-imports/no-unused-vars\n    catch (e) {\n      return false\n    }\n  }\n\n  public readFile(filename: string): string {\n    return this.fs.readFileSync(filename).toString('utf8')\n  }\n\n  public listPaths(dir: string): string[] {\n    return this.fs.readdirSync(dir)\n  }\n}\n"]}